diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AboutUserPreferencesActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AboutUserPreferencesActivity.java
index 046146b4b..1e405bfef 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AboutUserPreferencesActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AboutUserPreferencesActivity.java
@@ -36,30 +36,23 @@ import android.content.Intent;
import android.os.Bundle;
import android.text.InputType;
-import androidx.fragment.app.Fragment;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceManager;
-public class AboutUserPreferencesActivity extends AbstractGBActivity {
+public class AboutUserPreferencesActivity extends AbstractSettingsActivityV2 {
@Override
- protected void onCreate(final Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_device_settings);
+ protected String fragmentTag() {
+ return AboutUserPreferencesFragment.FRAGMENT_TAG;
+ }
- if (savedInstanceState == null) {
- Fragment fragment = getSupportFragmentManager().findFragmentByTag(AboutUserPreferencesFragment.FRAGMENT_TAG);
- if (fragment == null) {
- fragment = new AboutUserPreferencesFragment();
- }
- getSupportFragmentManager()
- .beginTransaction()
- .replace(R.id.settings_container, fragment, AboutUserPreferencesFragment.FRAGMENT_TAG)
- .commit();
- }
+ @Override
+ protected PreferenceFragmentCompat newFragment() {
+ return new AboutUserPreferencesFragment();
}
public static class AboutUserPreferencesFragment extends AbstractPreferenceFragment {
@@ -67,7 +60,7 @@ public class AboutUserPreferencesActivity extends AbstractGBActivity {
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
- addPreferencesFromResource(R.xml.about_user);
+ setPreferencesFromResource(R.xml.about_user, rootKey);
addPreferenceHandlerFor(PREF_USER_NAME, true, false);
addPreferenceHandlerFor(PREF_USER_YEAR_OF_BIRTH, true, false);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractPreferenceFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractPreferenceFragment.java
index 02eeb644e..07d979cfb 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractPreferenceFragment.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractPreferenceFragment.java
@@ -33,12 +33,15 @@ import androidx.preference.SwitchPreference;
import com.mobeta.android.dslv.DragSortListPreference;
import com.mobeta.android.dslv.DragSortListPreferenceFragment;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Collections;
import java.util.Set;
+import nodomain.freeyourgadget.gadgetbridge.R;
+import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsActivity;
import nodomain.freeyourgadget.gadgetbridge.util.XTimePreference;
import nodomain.freeyourgadget.gadgetbridge.util.XTimePreferenceFragment;
@@ -58,6 +61,25 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragmentCompa
sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferencesChangeHandler);
}
+ @Override
+ public void onResume() {
+ super.onResume();
+
+ updateActionBarTitle();
+ }
+
+ private void updateActionBarTitle() {
+ try {
+ CharSequence title = getPreferenceScreen().getTitle();
+ if (StringUtils.isBlank(title)) {
+ title = requireActivity().getTitle();
+ }
+ ((AbstractSettingsActivityV2) requireActivity()).setActionBarTitle(title);
+ } catch (final Exception e) {
+ LOG.error("Failed to update action bar title", e);
+ }
+ }
+
@Override
public void onStop() {
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(sharedPreferencesChangeHandler);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivity.java
index fda471066..d346e2c74 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivity.java
@@ -46,7 +46,10 @@ import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
* If you combine such preferences with a custom OnPreferenceChangeListener, you have
* to set that listener in #onCreate, *not* in #onPostCreate, otherwise the value will
* not be displayed.
+ *
+ * @deprecated use AbstractSettingsActivityV2
*/
+@Deprecated
public abstract class AbstractSettingsActivity extends AppCompatPreferenceActivity implements GBActivity {
private static final Logger LOG = LoggerFactory.getLogger(AbstractSettingsActivity.class);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivityV2.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivityV2.java
new file mode 100644
index 000000000..df746129e
--- /dev/null
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivityV2.java
@@ -0,0 +1,91 @@
+/* Copyright (C) 2019-2023 Andreas Shimokawa, José Rebelo
+
+ This file is part of Gadgetbridge.
+
+ Gadgetbridge is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Gadgetbridge is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see . */
+package nodomain.freeyourgadget.gadgetbridge.activities;
+
+import android.os.Bundle;
+import android.view.MenuItem;
+
+import androidx.appcompat.app.ActionBar;
+import androidx.fragment.app.Fragment;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceScreen;
+
+import nodomain.freeyourgadget.gadgetbridge.R;
+
+public abstract class AbstractSettingsActivityV2 extends AbstractGBActivity implements
+ PreferenceFragmentCompat.OnPreferenceStartScreenCallback {
+
+ protected abstract String fragmentTag();
+ protected abstract PreferenceFragmentCompat newFragment();
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_device_settings);
+ if (savedInstanceState == null) {
+ Fragment fragment = getSupportFragmentManager().findFragmentByTag(fragmentTag());
+ if (fragment == null) {
+ fragment = newFragment();
+ }
+ getSupportFragmentManager()
+ .beginTransaction()
+ .replace(R.id.settings_container, fragment, fragmentTag())
+ .commit();
+ }
+ }
+
+ @Override
+ public boolean onPreferenceStartScreen(final PreferenceFragmentCompat caller, final PreferenceScreen preferenceScreen) {
+ final PreferenceFragmentCompat fragment = newFragment();
+ final Bundle args;
+ if (fragment.getArguments() != null) {
+ args = fragment.getArguments();
+ } else {
+ args = new Bundle();
+ }
+ args.putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, preferenceScreen.getKey());
+ fragment.setArguments(args);
+
+ getSupportFragmentManager()
+ .beginTransaction()
+ .replace(R.id.settings_container, fragment, preferenceScreen.getKey())
+ .addToBackStack(preferenceScreen.getKey())
+ .commit();
+
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(final MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ // Simulate a back press, so that we don't actually exit the activity when
+ // in a nested PreferenceScreen
+ this.onBackPressed();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ public void setActionBarTitle(final CharSequence title) {
+ final ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.setTitle(title);
+ }
+ }
+}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DiscoveryPairingPreferenceActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DiscoveryPairingPreferenceActivity.java
index 1b28f8091..28a7076cc 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DiscoveryPairingPreferenceActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DiscoveryPairingPreferenceActivity.java
@@ -19,34 +19,26 @@ package nodomain.freeyourgadget.gadgetbridge.activities;
import android.os.Bundle;
-import androidx.fragment.app.Fragment;
+import androidx.preference.PreferenceFragmentCompat;
import nodomain.freeyourgadget.gadgetbridge.R;
-public class DiscoveryPairingPreferenceActivity extends AbstractGBActivity {
+public class DiscoveryPairingPreferenceActivity extends AbstractSettingsActivityV2 {
@Override
- protected void onCreate(final Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_device_settings);
+ protected String fragmentTag() {
+ return DiscoveryPairingPreferenceFragment.FRAGMENT_TAG;
+ }
- if (savedInstanceState == null) {
- Fragment fragment = getSupportFragmentManager().findFragmentByTag(DiscoveryPairingPreferenceFragment.FRAGMENT_TAG);
- if (fragment == null) {
- fragment = new DiscoveryPairingPreferenceFragment();
- }
- getSupportFragmentManager()
- .beginTransaction()
- .replace(R.id.settings_container, fragment, DiscoveryPairingPreferenceFragment.FRAGMENT_TAG)
- .commit();
- }
+ @Override
+ protected PreferenceFragmentCompat newFragment() {
+ return new DiscoveryPairingPreferenceFragment();
}
public static class DiscoveryPairingPreferenceFragment extends AbstractPreferenceFragment {
static final String FRAGMENT_TAG = "DISCOVERY_PAIRING_PREFERENCES_FRAGMENT";
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
- addPreferencesFromResource(R.xml.discovery_pairing_preferences);
-
+ setPreferencesFromResource(R.xml.discovery_pairing_preferences, rootKey);
}
}
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/NotificationManagementActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/NotificationManagementActivity.java
index fe891ba04..ed50198f6 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/NotificationManagementActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/NotificationManagementActivity.java
@@ -26,6 +26,7 @@ import android.provider.Settings;
import androidx.fragment.app.Fragment;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceFragmentCompat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,26 +36,19 @@ import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
-public class NotificationManagementActivity extends AbstractGBActivity {
+public class NotificationManagementActivity extends AbstractSettingsActivityV2 {
private static final Logger LOG = LoggerFactory.getLogger(NotificationManagementActivity.class);
private static final int RINGTONE_REQUEST_CODE = 4712;
private static final String DEFAULT_RINGTONE_URI = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE).toString();
@Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_device_settings);
+ protected String fragmentTag() {
+ return NotificationPreferencesFragment.FRAGMENT_TAG;
+ }
- if (savedInstanceState == null) {
- Fragment fragment = getSupportFragmentManager().findFragmentByTag(NotificationPreferencesFragment.FRAGMENT_TAG);
- if (fragment == null) {
- fragment = new NotificationPreferencesFragment();
- }
- getSupportFragmentManager()
- .beginTransaction()
- .replace(R.id.settings_container, fragment, NotificationPreferencesFragment.FRAGMENT_TAG)
- .commit();
- }
+ @Override
+ protected PreferenceFragmentCompat newFragment() {
+ return new NotificationPreferencesFragment();
}
public static class NotificationPreferencesFragment extends AbstractPreferenceFragment {
@@ -76,7 +70,7 @@ public class NotificationManagementActivity extends AbstractGBActivity {
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
- addPreferencesFromResource(R.xml.notifications_preferences);
+ setPreferencesFromResource(R.xml.notifications_preferences, rootKey);
Preference pref = findPreference("notifications_generic");
pref.setOnPreferenceClickListener(preference -> {
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsPreferencesActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsPreferencesActivity.java
index a1d61e298..0b3bb1a2c 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsPreferencesActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsPreferencesActivity.java
@@ -21,31 +21,24 @@ import android.content.Intent;
import android.os.Bundle;
import android.text.InputType;
-import androidx.fragment.app.Fragment;
import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.AboutUserPreferencesActivity;
-import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractPreferenceFragment;
+import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivityV2;
import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs;
-public class ChartsPreferencesActivity extends AbstractGBActivity {
+public class ChartsPreferencesActivity extends AbstractSettingsActivityV2 {
@Override
- protected void onCreate(final Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_device_settings);
+ protected String fragmentTag() {
+ return ChartsPreferencesFragment.FRAGMENT_TAG;
+ }
- if (savedInstanceState == null) {
- Fragment fragment = getSupportFragmentManager().findFragmentByTag(ChartsPreferencesFragment.FRAGMENT_TAG);
- if (fragment == null) {
- fragment = new ChartsPreferencesFragment();
- }
- getSupportFragmentManager()
- .beginTransaction()
- .replace(R.id.settings_container, fragment, ChartsPreferencesFragment.FRAGMENT_TAG)
- .commit();
- }
+ @Override
+ protected PreferenceFragmentCompat newFragment() {
+ return new ChartsPreferencesFragment();
}
public static class ChartsPreferencesFragment extends AbstractPreferenceFragment {
@@ -53,7 +46,7 @@ public class ChartsPreferencesActivity extends AbstractGBActivity {
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
- addPreferencesFromResource(R.xml.charts_preferences);
+ setPreferencesFromResource(R.xml.charts_preferences, rootKey);
setInputTypeFor(GBPrefs.CHART_MAX_HEART_RATE, InputType.TYPE_CLASS_NUMBER);
setInputTypeFor(GBPrefs.CHART_MIN_HEART_RATE, InputType.TYPE_CLASS_NUMBER);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsActivity.java
index a900e4590..78977f98f 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsActivity.java
@@ -16,30 +16,14 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.activities.devicesettings;
-import android.os.Bundle;
-import android.view.MenuItem;
-
-import androidx.appcompat.app.ActionBar;
-import androidx.fragment.app.Fragment;
import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.PreferenceScreen;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import nodomain.freeyourgadget.gadgetbridge.R;
-import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
+import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivityV2;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
-
-public class DeviceSettingsActivity extends AbstractGBActivity implements
- PreferenceFragmentCompat.OnPreferenceStartScreenCallback {
- private static final Logger LOG = LoggerFactory.getLogger(DeviceSettingsActivity.class);
+public class DeviceSettingsActivity extends AbstractSettingsActivityV2 {
public static final String MENU_ENTRY_POINT = "MENU_ENTRY_POINT";
- GBDevice device;
- MENU_ENTRY_POINTS menu_entry;
-
public enum MENU_ENTRY_POINTS {
DEVICE_SETTINGS,
AUTH_SETTINGS,
@@ -47,58 +31,15 @@ public class DeviceSettingsActivity extends AbstractGBActivity implements
}
@Override
- protected void onCreate(Bundle savedInstanceState) {
- device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE);
- menu_entry = (MENU_ENTRY_POINTS) getIntent().getSerializableExtra(MENU_ENTRY_POINT);
-
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_device_settings);
- if (savedInstanceState == null) {
- Fragment fragment = getSupportFragmentManager().findFragmentByTag(DeviceSpecificSettingsFragment.FRAGMENT_TAG);
- if (fragment == null) {
- fragment = DeviceSpecificSettingsFragment.newInstance(device, menu_entry);
- }
- getSupportFragmentManager()
- .beginTransaction()
- .replace(R.id.settings_container, fragment, DeviceSpecificSettingsFragment.FRAGMENT_TAG)
- .commit();
-
- }
+ protected String fragmentTag() {
+ return DeviceSpecificSettingsFragment.FRAGMENT_TAG;
}
@Override
- public boolean onPreferenceStartScreen(PreferenceFragmentCompat caller, PreferenceScreen preferenceScreen) {
- final PreferenceFragmentCompat fragment = DeviceSpecificSettingsFragment.newInstance(device, menu_entry);
- Bundle args = fragment.getArguments();
- args.putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, preferenceScreen.getKey());
- fragment.setArguments(args);
+ protected PreferenceFragmentCompat newFragment() {
+ final GBDevice device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE);
+ final MENU_ENTRY_POINTS menu_entry = (MENU_ENTRY_POINTS) getIntent().getSerializableExtra(MENU_ENTRY_POINT);
- getSupportFragmentManager()
- .beginTransaction()
- .replace(R.id.settings_container, fragment, preferenceScreen.getKey())
- .addToBackStack(preferenceScreen.getKey())
- .commit();
-
- return true;
- }
-
- public void setActionBarTitle(final CharSequence title) {
- final ActionBar actionBar = getSupportActionBar();
- if (actionBar != null) {
- actionBar.setTitle(title);
- }
- }
-
- @Override
- public boolean onOptionsItemSelected(final MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home:
- // Simulate a back press, so that we don't actually exit the activity when
- // in a nested PreferenceScreen
- this.onBackPressed();
- return true;
- }
-
- return super.onOptionsItemSelected(item);
+ return DeviceSpecificSettingsFragment.newInstance(device, menu_entry);
}
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java
index 636a9f96f..9ad779c26 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java
@@ -166,25 +166,6 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
setChangeListener();
}
- @Override
- public void onResume() {
- super.onResume();
-
- updateActionBarTitle();
- }
-
- private void updateActionBarTitle() {
- try {
- CharSequence title = getPreferenceScreen().getTitle();
- if (StringUtils.isBlank(title)) {
- title = getString(R.string.title_activity_device_specific_settings);
- }
- ((DeviceSettingsActivity) requireActivity()).setActionBarTitle(title);
- } catch (final Exception e) {
- LOG.error("Failed to update action bar title", e);
- }
- }
-
/*
* delayed execution so that the preferences are applied first
*/
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HybridHRWatchfaceSettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HybridHRWatchfaceSettingsActivity.java
index e1d8fc0e5..f359a30a3 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HybridHRWatchfaceSettingsActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HybridHRWatchfaceSettingsActivity.java
@@ -21,6 +21,7 @@ import android.os.Bundle;
import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.SwitchPreference;
import android.view.MenuItem;
@@ -29,15 +30,23 @@ import androidx.fragment.app.Fragment;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractPreferenceFragment;
+import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivityV2;
-public class HybridHRWatchfaceSettingsActivity extends AbstractGBActivity {
+public class HybridHRWatchfaceSettingsActivity extends AbstractSettingsActivityV2 {
static HybridHRWatchfaceSettings settings;
@Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_device_settings);
+ protected String fragmentTag() {
+ return HybridHRWatchfaceSettingsFragment.FRAGMENT_TAG;
+ }
+ @Override
+ protected PreferenceFragmentCompat newFragment() {
+ return new HybridHRWatchfaceSettingsFragment();
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if (bundle != null) {
@@ -46,16 +55,7 @@ public class HybridHRWatchfaceSettingsActivity extends AbstractGBActivity {
throw new IllegalArgumentException("Must provide a settings object when invoking this activity");
}
- if (savedInstanceState == null) {
- Fragment fragment = getSupportFragmentManager().findFragmentByTag(HybridHRWatchfaceSettingsFragment.FRAGMENT_TAG);
- if (fragment == null) {
- fragment = new HybridHRWatchfaceSettingsFragment();
- }
- getSupportFragmentManager()
- .beginTransaction()
- .replace(R.id.settings_container, fragment, HybridHRWatchfaceSettingsFragment.FRAGMENT_TAG)
- .commit();
- }
+ super.onCreate(savedInstanceState);
}
@Override
@@ -86,7 +86,7 @@ public class HybridHRWatchfaceSettingsActivity extends AbstractGBActivity {
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
- addPreferencesFromResource(R.xml.fossil_hr_watchface_settings);
+ setPreferencesFromResource(R.xml.fossil_hr_watchface_settings, rootKey);
EditTextPreference refresh_full = (EditTextPreference) findPreference("pref_hybridhr_watchface_refresh_full");
refresh_full.setOnPreferenceChangeListener(this);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HybridHRWatchfaceWidgetActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HybridHRWatchfaceWidgetActivity.java
index 8ca8c8716..9901731d2 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HybridHRWatchfaceWidgetActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HybridHRWatchfaceWidgetActivity.java
@@ -18,26 +18,23 @@ package nodomain.freeyourgadget.gadgetbridge.devices.qhybrid;
import android.content.Intent;
import android.os.Bundle;
+import android.view.MenuItem;
+
import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.SwitchPreference;
-import android.view.MenuItem;
-import androidx.fragment.app.Fragment;
-
-import java.util.Arrays;
-import java.util.Collections;
import java.util.LinkedHashMap;
-import java.util.Set;
import java.util.TimeZone;
import nodomain.freeyourgadget.gadgetbridge.R;
-import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractPreferenceFragment;
+import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivityV2;
-public class HybridHRWatchfaceWidgetActivity extends AbstractGBActivity {
+public class HybridHRWatchfaceWidgetActivity extends AbstractSettingsActivityV2 {
private static int widgetIndex;
private static HybridHRWatchfaceWidget widget;
@@ -51,10 +48,17 @@ public class HybridHRWatchfaceWidgetActivity extends AbstractGBActivity {
private static final Boolean WIDGET_CUSTOM_DEFAULT_SHOW_CIRCLE = true;
@Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_device_settings);
+ protected String fragmentTag() {
+ return HybridHRWatchfaceWidgetFragment.FRAGMENT_TAG;
+ }
+ @Override
+ protected PreferenceFragmentCompat newFragment() {
+ return new HybridHRWatchfaceWidgetFragment();
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if (bundle != null) {
@@ -64,16 +68,7 @@ public class HybridHRWatchfaceWidgetActivity extends AbstractGBActivity {
throw new IllegalArgumentException("Must provide a widget object when invoking this activity");
}
- if (savedInstanceState == null) {
- Fragment fragment = getSupportFragmentManager().findFragmentByTag(HybridHRWatchfaceWidgetFragment.FRAGMENT_TAG);
- if (fragment == null) {
- fragment = new HybridHRWatchfaceWidgetFragment();
- }
- getSupportFragmentManager()
- .beginTransaction()
- .replace(R.id.settings_container, fragment, HybridHRWatchfaceWidgetFragment.FRAGMENT_TAG)
- .commit();
- }
+ super.onCreate(savedInstanceState);
}
@Override
@@ -106,7 +101,7 @@ public class HybridHRWatchfaceWidgetActivity extends AbstractGBActivity {
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
- addPreferencesFromResource(R.xml.fossil_hr_widget_settings);
+ setPreferencesFromResource(R.xml.fossil_hr_widget_settings, rootKey);
widgetTypes = HybridHRWatchfaceWidget.getAvailableWidgetTypes(requireActivity().getBaseContext());
ListPreference widgetType = (ListPreference) findPreference("pref_hybridhr_widget_type");