我目前正在学习大量有关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
}
}