From 4cc88e5023828a676fa7946c85e12d245b0f257e Mon Sep 17 00:00:00 2001 From: arm64v8a <48624112+arm64v8a@users.noreply.github.com> Date: Mon, 15 May 2023 20:22:48 +0900 Subject: [PATCH] fix: fragment usage --- .../sagernet/ui/GroupSettingsActivity.kt | 28 +++---------------- .../sagernet/ui/RouteSettingsActivity.kt | 16 +++++------ .../ui/profile/ProfileSettingsActivity.kt | 22 +++++++-------- 3 files changed, 22 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/io/nekohasekai/sagernet/ui/GroupSettingsActivity.kt b/app/src/main/java/io/nekohasekai/sagernet/ui/GroupSettingsActivity.kt index a62202a2..dc3b63e6 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/ui/GroupSettingsActivity.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/ui/GroupSettingsActivity.kt @@ -158,13 +158,6 @@ class GroupSettingsActivity( } } - fun PreferenceFragmentCompat.viewCreated(view: View, savedInstanceState: Bundle?) { - } - - fun PreferenceFragmentCompat.displayPreferenceDialog(preference: Preference): Boolean { - return false - } - class UnsavedChangesDialogFragment : AlertDialogFragment() { override fun AlertDialog.Builder.prepare(listener: DialogInterface.OnClickListener) { setTitle(R.string.unsaved_changes_prompt) @@ -227,9 +220,7 @@ class GroupSettingsActivity( onMainDispatcher { supportFragmentManager.beginTransaction() - .replace(R.id.settings, MyPreferenceFragmentCompat().apply { - activity = this@GroupSettingsActivity - }) + .replace(R.id.settings, MyPreferenceFragmentCompat()) .commit() DataStore.dirty = false @@ -293,12 +284,12 @@ class GroupSettingsActivity( class MyPreferenceFragmentCompat : PreferenceFragmentCompat() { - lateinit var activity: GroupSettingsActivity + var activity: GroupSettingsActivity? = null override fun onCreatePreferencesFix(savedInstanceState: Bundle?, rootKey: String?) { preferenceManager.preferenceDataStore = DataStore.profileCacheStore try { - activity.apply { + activity = (requireActivity() as GroupSettingsActivity).apply { createPreferences(savedInstanceState, rootKey) } } catch (e: Exception) { @@ -315,10 +306,6 @@ class GroupSettingsActivity( super.onViewCreated(view, savedInstanceState) ViewCompat.setOnApplyWindowInsetsListener(listView, ListListener) - - activity.apply { - viewCreated(view, savedInstanceState) - } } override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { @@ -336,7 +323,7 @@ class GroupSettingsActivity( R.id.action_apply -> { runOnDefaultDispatcher { - activity.saveAndExit() + activity?.saveAndExit() } true } @@ -344,13 +331,6 @@ class GroupSettingsActivity( else -> false } - override fun onDisplayPreferenceDialog(preference: Preference) { - activity.apply { - if (displayPreferenceDialog(preference)) return - } - super.onDisplayPreferenceDialog(preference) - } - } object PasswordSummaryProvider : Preference.SummaryProvider { diff --git a/app/src/main/java/io/nekohasekai/sagernet/ui/RouteSettingsActivity.kt b/app/src/main/java/io/nekohasekai/sagernet/ui/RouteSettingsActivity.kt index 3671b28c..49d74905 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/ui/RouteSettingsActivity.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/ui/RouteSettingsActivity.kt @@ -275,9 +275,7 @@ class RouteSettingsActivity( onMainDispatcher { supportFragmentManager.beginTransaction() - .replace(R.id.settings, MyPreferenceFragmentCompat().apply { - activity = this@RouteSettingsActivity - }) + .replace(R.id.settings, MyPreferenceFragmentCompat()) .commit() DataStore.dirty = false @@ -354,12 +352,12 @@ class RouteSettingsActivity( class MyPreferenceFragmentCompat : PreferenceFragmentCompat() { - lateinit var activity: RouteSettingsActivity + var activity: RouteSettingsActivity? = null override fun onCreatePreferencesFix(savedInstanceState: Bundle?, rootKey: String?) { preferenceManager.preferenceDataStore = DataStore.profileCacheStore try { - activity.apply { + activity = (requireActivity() as RouteSettingsActivity).apply { createPreferences(savedInstanceState, rootKey) } } catch (e: Exception) { @@ -377,7 +375,7 @@ class RouteSettingsActivity( ViewCompat.setOnApplyWindowInsetsListener(listView, ListListener) - activity.apply { + activity?.apply { viewCreated(view, savedInstanceState) } } @@ -394,17 +392,19 @@ class RouteSettingsActivity( } true } + R.id.action_apply -> { runOnDefaultDispatcher { - activity.saveAndExit() + activity?.saveAndExit() } true } + else -> false } override fun onDisplayPreferenceDialog(preference: Preference) { - activity.apply { + activity?.apply { if (displayPreferenceDialog(preference)) return } super.onDisplayPreferenceDialog(preference) diff --git a/app/src/main/java/io/nekohasekai/sagernet/ui/profile/ProfileSettingsActivity.kt b/app/src/main/java/io/nekohasekai/sagernet/ui/profile/ProfileSettingsActivity.kt index 4acb41f2..96d42c89 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/ui/profile/ProfileSettingsActivity.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/ui/profile/ProfileSettingsActivity.kt @@ -136,9 +136,7 @@ abstract class ProfileSettingsActivity( onMainDispatcher { supportFragmentManager.beginTransaction() - .replace(R.id.settings, MyPreferenceFragmentCompat().apply { - activity = this@ProfileSettingsActivity - }) + .replace(R.id.settings, MyPreferenceFragmentCompat()) .commit() } } @@ -224,12 +222,12 @@ abstract class ProfileSettingsActivity( class MyPreferenceFragmentCompat : PreferenceFragmentCompat() { - lateinit var activity: ProfileSettingsActivity<*> + var activity: ProfileSettingsActivity<*>? = null override fun onCreatePreferencesFix(savedInstanceState: Bundle?, rootKey: String?) { preferenceManager.preferenceDataStore = DataStore.profileCacheStore try { - activity.apply { + activity = (requireActivity() as ProfileSettingsActivity<*>).apply { createPreferences(savedInstanceState, rootKey) } } catch (e: Exception) { @@ -247,12 +245,11 @@ abstract class ProfileSettingsActivity( ViewCompat.setOnApplyWindowInsetsListener(listView, ListListener) - activity.apply { + activity?.apply { viewCreated(view, savedInstanceState) + DataStore.dirty = false + DataStore.profileCacheStore.registerChangeListener(this) } - - DataStore.dirty = false - DataStore.profileCacheStore.registerChangeListener(activity) } override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { @@ -274,13 +271,13 @@ abstract class ProfileSettingsActivity( R.id.action_apply -> { runOnDefaultDispatcher { - activity.saveAndExit() + activity?.saveAndExit() } true } R.id.action_create_shortcut -> { - val ctx = requireContext() + val activity = requireActivity() as ProfileSettingsActivity<*> val ent = activity.proxyEntity!! val shortcut = ShortcutInfoCompat.Builder(requireContext(), "shortcut-profile-${ent.id}") @@ -305,6 +302,7 @@ abstract class ProfileSettingsActivity( } R.id.action_move -> { + val activity = requireActivity() as ProfileSettingsActivity<*> val view = LinearLayout(context).apply { val ent = activity.proxyEntity!! orientation = LinearLayout.VERTICAL @@ -345,7 +343,7 @@ abstract class ProfileSettingsActivity( } override fun onDisplayPreferenceDialog(preference: Preference) { - activity.apply { + activity?.apply { if (displayPreferenceDialog(preference)) return } super.onDisplayPreferenceDialog(preference)