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
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.preference.EditTextPreference
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.Preference
|
||||
@ -14,55 +11,12 @@ import androidx.preference.PreferenceFragmentCompat
|
||||
|
||||
abstract class MyPreferenceFragment : PreferenceFragmentCompat() {
|
||||
@Suppress("DEPRECATION")
|
||||
@SuppressLint("RestrictedApi")
|
||||
override fun onDisplayPreferenceDialog(preference: Preference) {
|
||||
|
||||
var handled = false
|
||||
if (callbackFragment is OnPreferenceDisplayDialogCallback) {
|
||||
handled =
|
||||
(callbackFragment as OnPreferenceDisplayDialogCallback).onPreferenceDisplayDialog(
|
||||
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}"
|
||||
)
|
||||
}
|
||||
if (parentFragmentManager.findFragmentByTag(javaClass.name) != null) return
|
||||
val f = when (preference) {
|
||||
is EditTextPreference -> MyEditTextPreferenceDialogFragment.newInstance(preference.key)
|
||||
is ListPreference -> MyListPreferenceDialogFragment.newInstance(preference.key)
|
||||
else -> return super.onDisplayPreferenceDialog(preference)
|
||||
}
|
||||
f.setTargetFragment(this, 0)
|
||||
f.show(parentFragmentManager, javaClass.name)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user