执行自定义DialogPreference时遇到问题

时间:2019-01-20 19:16:17

标签: android kotlin android-preferences

我目前正在学习大量有关android应用程序的知识,而我对自定义首选项的了解不多 因此,我尝试在Internet上浏览,然后编写了代码:

style

但是,如果没有onDisplayPreferenceDialog函数,我的自定义项目将无法正常工作,我不知道该如何写,因此我复制/粘贴了一个已经正常工作的Java函数,但是有很多地方被淘汰(最新教程来自3年之前)和一些函数在最后一个api上已弃用


有人可以帮我更新此功能

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
}

}

0 个答案:

没有答案