AbstractSettingsActivityV2: Allow custom fragments

This commit is contained in:
José Rebelo
2025-12-24 10:13:49 +00:00
parent c57f9dc606
commit 760ed6664e
@@ -32,10 +32,13 @@ import com.bytehamster.lib.preferencesearch.SearchPreferenceFragment;
import com.bytehamster.lib.preferencesearch.SearchPreferenceResult;
import com.bytehamster.lib.preferencesearch.SearchPreferenceResultListener;
import java.util.Objects;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.util.SearchPreferenceHighlighter;
public abstract class AbstractSettingsActivityV2 extends AbstractGBActivity implements
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback,
PreferenceFragmentCompat.OnPreferenceStartScreenCallback,
SearchPreferenceResultListener {
public static final String EXTRA_PREF_SCREEN = "preferenceScreen";
@@ -74,6 +77,21 @@ public abstract class AbstractSettingsActivityV2 extends AbstractGBActivity impl
}
}
@Override
public boolean onPreferenceStartFragment(@NonNull final PreferenceFragmentCompat caller,
@NonNull final Preference pref) {
final Fragment fragment = getSupportFragmentManager().getFragmentFactory().instantiate(
getClassLoader(),
Objects.requireNonNull(pref.getFragment())
);
fragment.setArguments(pref.getExtras());
getSupportFragmentManager().beginTransaction()
.replace(R.id.settings_container, fragment)
.addToBackStack(null)
.commit();
return true;
}
@Override
public boolean onPreferenceStartScreen(@NonNull final PreferenceFragmentCompat caller,
@NonNull final PreferenceScreen preferenceScreen) {