Проблема с настройкой DialogPreference - PullRequest
0 голосов
/ 20 января 2019

В настоящее время я много изучаю о приложениях для Android и мало что знаю о пользовательских элементах предпочтений. Поэтому я попытался посмотреть в Интернете, а затем сделал свой код:

package com.corrupted.radheat.TEMPER

import android.content.Context
import android.content.res.TypedArray
import android.support.v7.preference.DialogPreference
import android.support.v7.preference.Preference
import android.util.AttributeSet
import android.view.View
import android.widget.NumberPicker


class NumericPreference @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = R.attr.dialogPreferenceStyle, defStyleRes: Int = defStyleAttr) : DialogPreference(context, attrs, defStyleAttr, defStyleRes){

private var mWidget: NumberPicker? = null

private var value = DEFAULT_VALUE

init {

    dialogLayoutResource = R.layout.bumberpref_pickertest
}

protected fun onBindDialogView(view: View) {
    mWidget = view.findViewById(R.id.picker) as NumberPicker
    mWidget!!.minValue = 0
    mWidget!!.maxValue = 10
    mWidget!!.value = value
}

override fun onGetDefaultValue(a: TypedArray, index: Int): Any {
    return a.getInteger(index, DEFAULT_VALUE)
}

override fun onSetInitialValue(restorePersistedValue: Boolean, defaultValue: Any) {
    if (restorePersistedValue) {
        value = getPersistedInt(DEFAULT_VALUE)
    } else {
        value = defaultValue as Int
        persistInt(value)
    }
}

fun onDialogClosed(positiveResult: Boolean) {
    if (positiveResult) {
        value = mWidget!!.value
        persistInt(value)
    }
}

companion object {
    private const val DEFAULT_VALUE = 0
}

}

Но мои пользовательские элементы не работают без функции onDisplayPreferenceDialog, которую я понятия не имею, как написать, поэтому я скопировал / вставил уже работающую функцию Java, но есть много устаревших материалов (самые последние уроки были сделаны за 3 года) назад) и некоторые функции были объявлены устаревшими на последнем API


так что кто-то может помочь мне с обновлением этой функции

    fun onDisplayPreferenceDialog(preference: Preference) {
    if (preference is NumericPreference) {
        val dialogFragment = DialogPrefFragCompat.newInstance(preference.key)
        dialogFragment.setTargetFragment(this, 0)
        dialogFragment.show(getSupportFragmentManager(), null)
    } else
        super.onDisplayPreferenceDialog(preference)
}
...