gpt4 book ai didi

android - 在Kotlin中的android中创建对话框的好方法是什么?

转载 作者:行者123 更新时间:2023-12-02 13:12:48 24 4
gpt4 key购买 nike

我有一个SettingsActivity.kt,如下所示:

class SettingsActivity : AppCompatActivity() {

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

setLayout()
setListeners()

}

private fun setLayout() {/* fun to set layout* /}
private fun setListeners() {
val day = findViewById<LinearLayout>(R.id.settings_day)
day.setOnClickListener { myDialog() }

/* some other dialogs created in similar way */
}

private fun myDialog() {
val prefs = getSharedPreferences("SETTINGS", Context.MODE_PRIVATE)
var selectedDay = prefs.getInt("day", 1)

val myBuilder = AlertDialog.Builder(this)
myBuilder
.setTitle(R.string.settings_day)
.setSingleChoiceItems(R.array.days, selectedDay) { _, which ->
selectedDay = which
}
.setPositiveButton(R.string.dialog_ok) { _, _ ->
val editor = prefs.edit()
editor
.putInt("day", selectedDay)
.apply()
}
.setNegativeButton(R.string.dialog_cancel) { _, _ -> /* do nothing */ }

val theDialog = myBuilder.create()
theDialog.show()
}
}

当设备方向改变时,对话框消失。

我想我必须使用DialogFragment,但是我有一些问题,
https://developer.android.com/guide/topics/ui/dialogs#kotlin上的官方指南没有太多解释。我很困惑在哪里放置代码。

DialogFragment上的大多数教程都是针对自定义布局或Java的。

所以,有人可以告诉我如何转换我的代码
以便使用DialogFragment。
我很难从示例中理解它。

最佳答案

创建DialogFragment的子类,并覆盖onCreateDialog()以返回AlertDialog,例如只需将myDialog代码移动到此处的myBuilder.create()

当您想要显示DialogFragment时,实例化它并在其上调用show,并传递对片段管理器的引用和(可选)标签。例如:

MyDialogFragment().show(requireFragmentManager(), null)

关于android - 在Kotlin中的android中创建对话框的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56527358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com