Добавьте нейтральную кнопку в androidx EditTextPrefence / DialogPreference - PullRequest
0 голосов
/ 29 января 2020

Я использовал свой собственный класс предпочтений, полученный из EditTextPreference, чтобы включить нейтральную кнопку (чтобы пользователь мог выбрать значение по умолчанию). Я сделал это путем переопределения onPrepareDialogBuilder (конечно, из поиска в стеке).

override fun onPrepareDialogBuilder(builder: AlertDialog.Builder?) {  //So can set have a button to set the default value
    super.onPrepareDialogBuilder(builder)
    builder?.setNeutralButton("Default") { dialogInterface: DialogInterface, i: Int ->
        text = sharedPreferences.getString(dftKey, "")
    }
}

Однако этот метод не представляется возможным с помощью androidx EditTextPreference. Будем благодарны за любые предложения о том, как добавить нейтральную кнопку в EditTextPreference androidx.

1 Ответ

0 голосов
/ 03 февраля 2020

Установив свою активность в соответствии с https://developer.android.com/guide/topics/ui/settings, я обнаружил, что могу добавить интерфейс PreferenceFragmentCompat.OnPreferenceDisplayDialogCallback в AppCompatActivity и переопределить onPreferenceDisplayDialog, чтобы показать мой собственный диалог.

class MySettingsActivity: AppCompatActivity(),  PreferenceFragmentCompat.OnPreferenceDisplayDialogCallback {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        supportFragmentManager
                .beginTransaction()
                .replace(android.R.id.content, MyPreferenceFragment())
                .commit()
    }


    override fun onPreferenceDisplayDialog(caller: PreferenceFragmentCompat, pref: Preference?): Boolean {
        var handeld = false
        if(pref is MyEditTextPreference) {
            myPrefDialog(caller, pref)
            handled = true
        }
        return handled
    }
}
...