diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceFragment.java index 8b9675c68..b57eacd58 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceFragment.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceFragment.java @@ -22,8 +22,6 @@ import net.kdt.pojavlaunch.prefs.LauncherPreferences; */ public class LauncherPreferenceFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { - private Preference mRequestNotificationPermissionPreference; - @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { view.setBackgroundColor(Color.parseColor("#232323")); @@ -33,12 +31,22 @@ public class LauncherPreferenceFragment extends PreferenceFragmentCompat impleme @Override public void onCreatePreferences(Bundle b, String str) { addPreferencesFromResource(R.xml.pref_main); - mRequestNotificationPermissionPreference = requirePreference("notification_permission_request"); + setupNotificationRequestPreference(); + } + + private void setupNotificationRequestPreference() { + Preference mRequestNotificationPermissionPreference = requirePreference("notification_permission_request"); Activity activity = getActivity(); - mRequestNotificationPermissionPreference.setVisible( - activity instanceof LauncherActivity && - !((LauncherActivity) activity).checkForNotificationPermission() - ); + if(activity instanceof LauncherActivity) { + LauncherActivity launcherActivity = (LauncherActivity)activity; + mRequestNotificationPermissionPreference.setVisible(!launcherActivity.checkForNotificationPermission()); + mRequestNotificationPermissionPreference.setOnPreferenceClickListener(preference -> { + launcherActivity.askForNotificationPermission(()->mRequestNotificationPermissionPreference.setVisible(false)); + return true; + }); + }else{ + mRequestNotificationPermissionPreference.setVisible(false); + } } @Override @@ -60,18 +68,6 @@ public class LauncherPreferenceFragment extends PreferenceFragmentCompat impleme LauncherPreferences.loadPreferences(getContext()); } - @Override - public boolean onPreferenceTreeClick(@NonNull Preference preference) { - Activity activity = getActivity(); - if(preference.equals(mRequestNotificationPermissionPreference) && - activity instanceof LauncherActivity) { - ((LauncherActivity)activity).askForNotificationPermission(()-> - mRequestNotificationPermissionPreference.setVisible(false) - ); - } - return super.onPreferenceTreeClick(preference); - } - protected Preference requirePreference(CharSequence key) { Preference preference = findPreference(key); if(preference != null) return preference; diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceJavaFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceJavaFragment.java index 1b2ba3f44..dbcf3666d 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceJavaFragment.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceJavaFragment.java @@ -3,14 +3,11 @@ package net.kdt.pojavlaunch.prefs.screens; import static net.kdt.pojavlaunch.Architecture.is32BitsDevice; import static net.kdt.pojavlaunch.Tools.getTotalDeviceMemory; -import android.content.Context; import android.os.Bundle; import android.widget.TextView; import androidx.activity.result.ActivityResultLauncher; -import androidx.annotation.NonNull; import androidx.preference.EditTextPreference; -import androidx.preference.Preference; import net.kdt.pojavlaunch.R; import net.kdt.pojavlaunch.Tools; @@ -21,7 +18,6 @@ import net.kdt.pojavlaunch.prefs.LauncherPreferences; public class LauncherPreferenceJavaFragment extends LauncherPreferenceFragment { private MultiRTConfigDialog mDialogScreen; - private Preference mMultiRTPreference; private final ActivityResultLauncher mVmInstallLauncher = registerForActivityResult(new OpenDocumentWithExtension("xz"), (data)->{ if(data != null) Tools.installRuntimeFromUri(getContext(), data); @@ -52,15 +48,10 @@ public class LauncherPreferenceJavaFragment extends LauncherPreferenceFragment { editJVMArgs.setOnBindEditTextListener(TextView::setSingleLine); } - mMultiRTPreference = findPreference("install_jre"); - } - - @Override - public boolean onPreferenceTreeClick(@NonNull Preference preference) { - if(preference.equals(mMultiRTPreference)) { + requirePreference("install_jre").setOnPreferenceClickListener(preference->{ openMultiRTDialog(); - } - return super.onPreferenceTreeClick(preference); + return true; + }); } private void openMultiRTDialog() {