diff --git a/src/main/java/de/dennisguse/opentracks/AbstractActivity.java b/src/main/java/de/dennisguse/opentracks/AbstractActivity.java index ac6d742f7..a98d5a581 100644 --- a/src/main/java/de/dennisguse/opentracks/AbstractActivity.java +++ b/src/main/java/de/dennisguse/opentracks/AbstractActivity.java @@ -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) { diff --git a/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java b/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java index 91d3519ae..80de8c5bc 100644 --- a/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java @@ -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(); /** diff --git a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java index 523f89210..305c6581b 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java @@ -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); } diff --git a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java index 1699e9aea..d09b07dea 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java @@ -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); } diff --git a/src/main/java/de/dennisguse/opentracks/settings/ActivityTypePreference.java b/src/main/java/de/dennisguse/opentracks/settings/ActivityTypePreference.java index cded911fa..3db290db1 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/ActivityTypePreference.java +++ b/src/main/java/de/dennisguse/opentracks/settings/ActivityTypePreference.java @@ -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 diff --git a/src/main/java/de/dennisguse/opentracks/settings/ResetDialogPreference.java b/src/main/java/de/dennisguse/opentracks/settings/ResetDialogPreference.java index f56d2a8cc..6b7ff0caf 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/ResetDialogPreference.java +++ b/src/main/java/de/dennisguse/opentracks/settings/ResetDialogPreference.java @@ -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; diff --git a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java index 852d0acb3..2d9671a8d 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java +++ b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java @@ -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(); } diff --git a/src/main/res/menu/list_context_menu.xml b/src/main/res/menu/list_context_menu.xml index 11addf1bb..2a0835609 100644 --- a/src/main/res/menu/list_context_menu.xml +++ b/src/main/res/menu/list_context_menu.xml @@ -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. --> -