java - 所选值保留保存在带有单选按钮 Android 的 Dialogfragment 中

标签 java android kotlin

我正在尝试使用其他选项来保存 Dialogfragment 中的值。一旦保存,但如果我重新打开对话框 fragment 屏幕值更改为“无应答”..它不会保持保存状态或调用我上次保存的值。 当我选择值并保存时我的第一张图像

enter image description here

当我重新打开对话框时

enter image description here

对话框


class HeightDialog : DialogFragment() {

    interface SingleChoiceListner {
        fun onPositiveButtonClicked(list: Array<String>?, positon: Int)
        fun onNegativeButtonClicked()
    }

    internal var positition = 0
    lateinit var mSingleChoiceListner: SingleChoiceListner


    override fun onAttach(context: Context) {
        super.onAttach(context)

        try {
            mSingleChoiceListner = context as SingleChoiceListner
        } catch (e: Exception) {
            throw ClassCastException(activity.toString() + "SingleChoiceListner must be implemented")
        }
    }


    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {


        val builder = AlertDialog.Builder(activity)
        val heightArray = activity?.resources?.getStringArray(R.array.height_array)

        builder.setTitle("Select Your Height")
            .setSingleChoiceItems(
                heightArray,
                positition
            ) { dialog, which -> positition=which }
            .setPositiveButton(
                "ok"
            ) { dialog, which ->
                mSingleChoiceListner.onPositiveButtonClicked(
                    heightArray,
                    positition
                )
            }
            .setNegativeButton(
                "cancle"
            ) { dialog, which -> mSingleChoiceListner.onNegativeButtonClicked() }

        return builder.create()

    }

}

Activity

override fun onPositiveButtonClicked(list: Array<String>?, positon: Int) {
    val height = list?.get(positon)
    heightPosition=positon
    newHeight = "${height?.replace("cm", "")}"
    height_tv.text = height
}

override fun onNegativeButtonClicked() {

}

最佳答案

setSingleChoiceItems 中的第二个参数负责对话框中的默认值。 如果您想显示此对话框中最后选择的项目,您应该保存此位置的某个位置,稍后当您调用此对话框时检索您的值并设置它。

关于java - 所选值保留保存在带有单选按钮 Android 的 Dialogfragment 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60113224/

相关文章:

java - JDK中有没有一个好的异常类来应对用户输入太长的情况?

java - 使用 CriteriaBuilder 进行动态查询 : one-to-many

java - 等待 JTextField "SPACE"事件

android - 渲染过程中遇到 EGL 错误 12291 EGL_BAD_ALLOC

android - 第一次安装应用程序崩溃,但重新安装后可以使用

java - LinearLayout addview() 禁用第一个 child 的 margin

gradle - Kotlin Gradle 使用依赖项

android - 即使指定了 "match_parent",使用 ConstraintLayout 的 RecyclerView 项目也不会填满屏幕的整个宽度

带有最大化按钮的 Java 模态窗口

collections - 没有索引时基于索引的列表项的不同函数调用