mirror of
https://github.com/fcitx5-android/fcitx5-android.git
synced 2026-08-02 04:44:35 +08:00
Simplify onDisplayPreferenceDialog in MyPreferenceFragment
This commit is contained in:
parent
11d006354e
commit
10f62c6936
@ -4,9 +4,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.fcitx.fcitx5.android.ui.main.modified
|
package org.fcitx.fcitx5.android.ui.main.modified
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
|
||||||
import androidx.fragment.app.DialogFragment
|
|
||||||
import androidx.fragment.app.Fragment
|
|
||||||
import androidx.preference.EditTextPreference
|
import androidx.preference.EditTextPreference
|
||||||
import androidx.preference.ListPreference
|
import androidx.preference.ListPreference
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
@ -14,55 +11,12 @@ import androidx.preference.PreferenceFragmentCompat
|
|||||||
|
|
||||||
abstract class MyPreferenceFragment : PreferenceFragmentCompat() {
|
abstract class MyPreferenceFragment : PreferenceFragmentCompat() {
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
@SuppressLint("RestrictedApi")
|
|
||||||
override fun onDisplayPreferenceDialog(preference: Preference) {
|
override fun onDisplayPreferenceDialog(preference: Preference) {
|
||||||
|
if (parentFragmentManager.findFragmentByTag(javaClass.name) != null) return
|
||||||
var handled = false
|
val f = when (preference) {
|
||||||
if (callbackFragment is OnPreferenceDisplayDialogCallback) {
|
is EditTextPreference -> MyEditTextPreferenceDialogFragment.newInstance(preference.key)
|
||||||
handled =
|
is ListPreference -> MyListPreferenceDialogFragment.newInstance(preference.key)
|
||||||
(callbackFragment as OnPreferenceDisplayDialogCallback).onPreferenceDisplayDialog(
|
else -> return super.onDisplayPreferenceDialog(preference)
|
||||||
this,
|
|
||||||
preference
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
var callbackFragment: Fragment? = this
|
|
||||||
while (!handled && callbackFragment != null) {
|
|
||||||
if (callbackFragment is OnPreferenceDisplayDialogCallback) {
|
|
||||||
handled = (callbackFragment as OnPreferenceDisplayDialogCallback)
|
|
||||||
.onPreferenceDisplayDialog(this, preference)
|
|
||||||
}
|
|
||||||
callbackFragment = callbackFragment.parentFragment
|
|
||||||
}
|
|
||||||
if (!handled && context is OnPreferenceDisplayDialogCallback) {
|
|
||||||
handled = (context as OnPreferenceDisplayDialogCallback)
|
|
||||||
.onPreferenceDisplayDialog(this, preference)
|
|
||||||
}
|
|
||||||
if (!handled && activity is OnPreferenceDisplayDialogCallback) {
|
|
||||||
handled = (activity as OnPreferenceDisplayDialogCallback)
|
|
||||||
.onPreferenceDisplayDialog(this, preference)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (handled) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parentFragmentManager.findFragmentByTag(javaClass.name) != null) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
val f: DialogFragment = when (preference) {
|
|
||||||
is EditTextPreference -> {
|
|
||||||
MyEditTextPreferenceDialogFragment.newInstance(preference.getKey())
|
|
||||||
}
|
|
||||||
is ListPreference -> {
|
|
||||||
MyListPreferenceDialogFragment.newInstance(preference.getKey())
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
throw IllegalArgumentException(
|
|
||||||
"Cannot display dialog for an unknown Preference type: ${preference.javaClass.name}"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
f.setTargetFragment(this, 0)
|
f.setTargetFragment(this, 0)
|
||||||
f.show(parentFragmentManager, javaClass.name)
|
f.show(parentFragmentManager, javaClass.name)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user