From 156e4f990daaf7e05e45e458d401483f77a7b67c Mon Sep 17 00:00:00 2001 From: tarsin Date: Fri, 15 Jul 2022 13:12:30 +0800 Subject: [PATCH] Workaround for preference anim --- .../hippo/ehviewer/ui/SettingsActivity.java | 2 ++ .../ui/fragment/SettingsFragment.java | 21 +++++++++++++++++++ app/src/main/res/xml/settings_headers.xml | 12 +++++------ 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.java index a5d3fa602..8d5bdcc4d 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.java @@ -21,6 +21,7 @@ import android.view.MenuItem; import androidx.annotation.StringRes; import androidx.appcompat.app.ActionBar; +import androidx.fragment.app.FragmentTransaction; import com.google.android.material.snackbar.Snackbar; import com.hippo.ehviewer.R; @@ -41,6 +42,7 @@ public final class SettingsActivity extends EhActivity { if (savedInstanceState == null) { getSupportFragmentManager() .beginTransaction() + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_MATCH_ACTIVITY_OPEN) .replace(R.id.fragment, new SettingsFragment()) .commitAllowingStateLoss(); } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/fragment/SettingsFragment.java b/app/src/main/java/com/hippo/ehviewer/ui/fragment/SettingsFragment.java index 3dc6dd419..1c87ee64a 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/fragment/SettingsFragment.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/fragment/SettingsFragment.java @@ -21,6 +21,9 @@ package com.hippo.ehviewer.ui.fragment; import android.os.Bundle; import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; +import androidx.preference.Preference; import com.hippo.ehviewer.R; @@ -30,6 +33,24 @@ public class SettingsFragment extends BasePreferenceFragment { addPreferencesFromResource(R.xml.settings_headers); } + @Override + public boolean onPreferenceTreeClick(Preference preference) { + String key = preference.getKey(); + try { + Fragment classObj = (Fragment)Class.forName(key).newInstance(); + requireActivity().getSupportFragmentManager() + .beginTransaction() + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE) + .replace(R.id.fragment, classObj) + .addToBackStack("1") + .commitAllowingStateLoss(); + } catch (ClassNotFoundException | IllegalAccessException | java.lang.InstantiationException e) { + e.printStackTrace(); + return false; + } + return true; + } + @Override public int getFragmentTitle() { return R.string.settings; diff --git a/app/src/main/res/xml/settings_headers.xml b/app/src/main/res/xml/settings_headers.xml index 97dfa799e..7c9ac5b23 100644 --- a/app/src/main/res/xml/settings_headers.xml +++ b/app/src/main/res/xml/settings_headers.xml @@ -17,32 +17,32 @@