Migration to Androidx PreferenceCompat.

This commit is contained in:
Dennis Guse
2019-10-17 06:00:47 +02:00
parent 50654c6baf
commit 024dd603cb
13 changed files with 80 additions and 73 deletions
@@ -19,12 +19,12 @@ package de.dennisguse.opentracks;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import androidx.fragment.app.FragmentActivity;
import androidx.appcompat.app.AppCompatActivity;
/**
* @author Jimmy Shih
*/
public abstract class AbstractActivity extends FragmentActivity {
public abstract class AbstractActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -29,9 +29,8 @@ import android.view.MenuItem;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ListView;
import android.widget.SearchView;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.SearchView;
import java.util.ArrayList;
@@ -208,10 +207,9 @@ public abstract class AbstractListActivity extends AbstractActivity implements C
}
/**
* Gets the track recording service connection. For stopping the current
* recording if need to delete the current recording track.
* Gets the track recording service connection.
* For stopping the current recording if need to delete the current recording track.
*/
@NonNull
abstract protected TrackRecordingServiceConnection getTrackRecordingServiceConnection();
/**
@@ -31,13 +31,14 @@ import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.ShareActionProvider;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.ShareActionProvider;
import androidx.core.app.ActivityCompat;
import androidx.core.view.MenuItemCompat;
import androidx.viewpager.widget.ViewPager;
import de.dennisguse.opentracks.content.ContentProviderUtils;
@@ -318,7 +319,7 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA
insertPhotoMenuItem.setVisible(new Intent(MediaStore.ACTION_IMAGE_CAPTURE).resolveActivity(getPackageManager()) != null);
shareMenuItem = menu.findItem(R.id.track_detail_share);
ShareActionProvider shareActionProvider = (ShareActionProvider) shareMenuItem.getActionProvider();
ShareActionProvider shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareMenuItem);
shareActionProvider.setShareIntent(IntentUtils.newShareFileIntent(this, new long[]{trackId}));
voiceFrequencyMenuItem = menu.findItem(R.id.track_detail_voice_frequency);
@@ -392,6 +393,7 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA
}
return;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@@ -40,12 +40,13 @@ import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.ShareActionProvider;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.SearchView;
import androidx.appcompat.widget.ShareActionProvider;
import androidx.core.app.ActivityCompat;
import androidx.core.view.MenuItemCompat;
import androidx.cursoradapter.widget.ResourceCursorAdapter;
import androidx.loader.app.LoaderManager;
import androidx.loader.app.LoaderManager.LoaderCallbacks;
@@ -118,7 +119,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
boolean isSingleSelection = trackIds.length == 1;
MenuItem shareMenuItem = menu.findItem(R.id.list_context_menu_share);
ShareActionProvider shareActionProvider = (ShareActionProvider) shareMenuItem.getActionProvider();
ShareActionProvider shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareMenuItem);
shareActionProvider.setShareIntent(trackIds.length == 0 ? null : IntentUtils.newShareFileIntent(TrackListActivity.this, trackIds));
menu.findItem(R.id.list_context_menu_edit).setVisible(isSingleSelection);
@@ -394,10 +395,9 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
boolean isRecording = PreferencesUtils.isRecording(recordingTrackId);
updateMenuItems(isGpsStarted, isRecording);
View searchView = searchMenuItem.getActionView();
if (searchView instanceof SearchView) {
((SearchView) searchView).setQuery("", false);
}
SearchView searchView = (SearchView) searchMenuItem.getActionView();
searchView.setQuery("", false);
return super.onPrepareOptionsMenu(menu);
}
@@ -27,9 +27,8 @@ import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Spinner;
import androidx.fragment.app.FragmentActivity;
import androidx.preference.DialogPreference;
import androidx.preference.PreferenceDialogFragment;
import androidx.preference.PreferenceDialogFragmentCompat;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
@@ -67,7 +66,7 @@ public class ActivityTypePreference extends DialogPreference {
return R.layout.preference_activity_type;
}
public static class ActivityPreferenceDialog extends PreferenceDialogFragment {
public static class ActivityPreferenceDialog extends PreferenceDialogFragmentCompat {
private AutoCompleteTextView textView;
private Spinner spinner;
@@ -75,7 +74,7 @@ public class ActivityTypePreference extends DialogPreference {
static ActivityPreferenceDialog newInstance(String preferenceKey) {
ActivityTypePreference.ActivityPreferenceDialog dialog = new ActivityTypePreference.ActivityPreferenceDialog();
final Bundle bundle = new Bundle(1);
bundle.putString(PreferenceDialogFragment.ARG_KEY, preferenceKey);
bundle.putString(PreferenceDialogFragmentCompat.ARG_KEY, preferenceKey);
dialog.setArguments(bundle);
return dialog;
@@ -134,10 +133,7 @@ public class ActivityTypePreference extends DialogPreference {
private void showIconSelectDialog() {
String category = PreferencesUtils.getString(getActivity(), R.string.default_activity_key, PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT);
// TODO Remove casting when upgrading to new Androidx compat.
FragmentActivity fragmentActivity = (androidx.fragment.app.FragmentActivity) getActivity();
ChooseActivityTypeDialogFragment.showDialog(fragmentActivity.getSupportFragmentManager(), category);
ChooseActivityTypeDialogFragment.showDialog(getActivity().getSupportFragmentManager(), category);
}
@Override
@@ -6,7 +6,7 @@ import android.util.AttributeSet;
import android.widget.Toast;
import androidx.preference.DialogPreference;
import androidx.preference.PreferenceDialogFragment;
import androidx.preference.PreferenceDialogFragmentCompat;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.util.PreferencesUtils;
@@ -17,12 +17,12 @@ public class ResetDialogPreference extends DialogPreference {
super(context, attrs);
}
public static class ResetPreferenceDialog extends PreferenceDialogFragment {
public static class ResetPreferenceDialog extends PreferenceDialogFragmentCompat {
static PreferenceDialogFragment newInstance(String preferenceKey) {
static PreferenceDialogFragmentCompat newInstance(String preferenceKey) {
ResetPreferenceDialog dialog = new ResetPreferenceDialog();
final Bundle bundle = new Bundle(1);
bundle.putString(PreferenceDialogFragment.ARG_KEY, preferenceKey);
bundle.putString(PreferenceDialogFragmentCompat.ARG_KEY, preferenceKey);
dialog.setArguments(bundle);
return dialog;
@@ -1,13 +1,13 @@
package de.dennisguse.opentracks.settings;
import android.app.DialogFragment;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentActivity;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragment;
import androidx.preference.PreferenceFragmentCompat;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
@@ -22,7 +22,7 @@ public class SettingsActivity extends FragmentActivity implements ChooseActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, prefsFragment).commit();
getSupportFragmentManager().beginTransaction().replace(android.R.id.content, prefsFragment).commit();
}
@Override
@@ -30,7 +30,7 @@ public class SettingsActivity extends FragmentActivity implements ChooseActivity
prefsFragment.setDefaultActivity(iconValue);
}
public static class PrefsFragment extends PreferenceFragment {
public static class PrefsFragment extends PreferenceFragmentCompat {
/*
* Note that sharedPreferenceChangeListener cannot be an anonymous inner class.
@@ -62,7 +62,7 @@ public class SettingsActivity extends FragmentActivity implements ChooseActivity
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.settings);
setPreferencesFromResource(R.xml.settings, rootKey);
updateUnits();
}
+13 -12
View File
@@ -13,30 +13,31 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/list_context_menu_share"
android:actionProviderClass="android.widget.ShareActionProvider"
android:showAsAction="ifRoom"
android:title="@string/menu_share" />
android:title="@string/menu_share"
app:actionProviderClass="androidx.appcompat.widget.ShareActionProvider"
app:showAsAction="ifRoom" />
<item
android:id="@+id/list_context_menu_show_on_map"
android:icon="@drawable/ic_map_24dp"
android:showAsAction="ifRoom"
android:title="@string/menu_show_on_map" />
android:title="@string/menu_show_on_map"
app:showAsAction="ifRoom" />
<item
android:id="@+id/list_context_menu_edit"
android:icon="@drawable/ic_edit_24dp"
android:showAsAction="ifRoom"
android:title="@string/menu_edit" />
android:title="@string/menu_edit"
app:showAsAction="ifRoom" />
<item
android:id="@+id/list_context_menu_delete"
android:icon="@drawable/ic_delete_forever_24dp"
android:showAsAction="ifRoom"
android:title="@string/menu_delete" />
android:title="@string/menu_delete"
app:showAsAction="ifRoom" />
<item
android:id="@+id/list_context_menu_select_all"
android:icon="@drawable/ic_select_all_24dp"
android:showAsAction="ifRoom"
android:title="@string/menu_select_all" />
android:title="@string/menu_select_all"
app:showAsAction="ifRoom" />
</menu>
+8 -7
View File
@@ -13,20 +13,21 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/marker_detail_show_on_map"
android:icon="@drawable/ic_map_24dp"
android:showAsAction="ifRoom"
android:title="@string/menu_show_on_map" />
android:title="@string/menu_show_on_map"
app:showAsAction="ifRoom" />
<item
android:id="@+id/marker_detail_edit"
android:icon="@drawable/ic_edit_24dp"
android:showAsAction="ifRoom"
android:title="@string/menu_edit" />
android:title="@string/menu_edit"
app:showAsAction="ifRoom" />
<item
android:id="@+id/marker_detail_delete"
android:icon="@drawable/ic_delete_forever_24dp"
android:showAsAction="ifRoom"
android:title="@string/menu_delete" />
android:title="@string/menu_delete"
app:showAsAction="ifRoom" />
</menu>
+7 -6
View File
@@ -13,15 +13,16 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/marker_list_insert_marker"
android:icon="@drawable/ic_marker_show_24dp"
android:showAsAction="ifRoom"
android:title="@string/menu_insert_marker" />
android:title="@string/menu_insert_marker"
app:showAsAction="ifRoom" />
<item
android:id="@+id/marker_list_search"
android:actionViewClass="android.widget.SearchView"
android:showAsAction="ifRoom"
android:title="@string/menu_search" />
android:title="@string/menu_search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="ifRoom" />
</menu>
+7 -6
View File
@@ -13,29 +13,30 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/track_detail_insert_marker"
android:icon="@drawable/ic_marker_add_24dp"
android:orderInCategory="1"
android:showAsAction="ifRoom"
app:showAsAction="ifRoom"
android:title="@string/menu_insert_marker" />
<item
android:id="@+id/track_detail_insert_photo"
android:icon="@drawable/ic_camera_24dp"
android:orderInCategory="2"
android:showAsAction="ifRoom"
app:showAsAction="ifRoom"
android:title="@string/menu_insert_photo" />
<item
android:id="@+id/track_detail_menu_show_on_map"
android:icon="@drawable/ic_map_24dp"
android:showAsAction="ifRoom"
app:showAsAction="ifRoom"
android:title="@string/menu_show_on_map" />
<item
android:id="@+id/track_detail_share"
android:actionProviderClass="android.widget.ShareActionProvider"
app:actionProviderClass="androidx.appcompat.widget.ShareActionProvider"
android:orderInCategory="4"
android:showAsAction="ifRoom"
app:showAsAction="ifRoom"
android:title="@string/menu_share" />
<item
android:id="@+id/track_detail_markers"
+9 -8
View File
@@ -13,23 +13,24 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/track_list_search"
android:actionViewClass="android.widget.SearchView"
android:showAsAction="ifRoom"
android:title="@string/menu_search" />
android:title="@string/menu_search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="ifRoom" />
<!-- Icon and title is overwritten by TrackListActivity -->
<item
android:id="@+id/track_list_start_gps"
android:icon="@drawable/ic_gps_off_24dp"
android:showAsAction="ifRoom"
android:title="@string/menu_start_gps" />
android:title="@string/menu_start_gps"
app:showAsAction="ifRoom" />
<item
android:id="@+id/track_list_markers"
android:icon="@drawable/ic_marker_show_24dp"
android:showAsAction="ifRoom"
android:title="@string/menu_markers" />
android:title="@string/menu_markers"
app:showAsAction="ifRoom" />
<item
android:id="@+id/track_list_aggregated_statistics"
android:icon="@drawable/ic_statistics_24dp"
+7 -1
View File
@@ -15,7 +15,8 @@ limitations under the License.
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="ThemeCustom" parent="android:Theme.Holo">
<style name="ThemeCustom" parent="Theme.AppCompat">
<!-- TODO Cleanup necessary due to change to appcompat -->
<!-- Auto generated -->
<item name="android:activatedBackgroundIndicator">@drawable/activated_background_holo_dark
</item>
@@ -30,6 +31,10 @@ limitations under the License.
<item name="android:actionBarStyle">@style/ActionBarStyleCustom</item>
<item name="android:actionModeBackground">@drawable/custom_action_mode_background</item>
<item name="android:alertDialogTheme">@style/CustomAlertDialogTheme</item>
<!-- <item name="colorPrimary">TODO</item>-->
<!-- <item name="colorPrimaryDark">TODO</item>-->
<item name="android:colorAccent">@color/holo_orange_dark</item>
</style>
@@ -43,6 +48,7 @@ limitations under the License.
<item name="android:backgroundDimEnabled">false</item>
</style>
<!-- TODO Use Theme.AppCompat.Dialog after migrating to settings to fragements -->
<style name="CustomAlertDialogTheme" parent="@android:style/Theme.Holo.Dialog">
<!-- From auto generated -->
<item name="android:activatedBackgroundIndicator">@drawable/activated_background_holo_dark