在创建 Android 应用程序时,我想创建一个函数,允许您在从片段创建的对话框窗口中设置暗模式。由于找到了设置暗模式的方法,几乎所有开发人员都使用了重启活动。有没有办法在不重启的情况下立即应用暗模式?这是我当前使用的片段内对话窗口中的暗模式应用程序代码。
class MyFragment : Fragment() {
private var dialog: AlertDialg? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_my, container, false)
if (AppCompatDelegete.getDefulatNightMode() == AppCompatDelegate.MODE_NIGHT_YES) {
context!!.setTheme(R.style.DarkTheme)
} else {
context!!.setTheme(R.style.LightTheme)
}
view.darkMode.setOnClickListener {
val v = LayoutInfalter.from(context).inflate(R.layout.dialog_dark, null)
builder.setView(v)
dialog = builder.create()
dialog.show()
v.selectMode.setOnCheckedChangeListener { _, id ->
when (id) {
R.id.light -> {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
val intent = Intent(context, MainActivity::class.java)
startActivity(intent)
}
R.id.dark -> {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
val intent = Intent(context, MainActivity::class.java)
startActivity(intent)
}
}
}
}
}
}
单击 that inflates 中的ButtondarkMode
会创建一个that inflates 。里面有RadioGroup,里面有单选按钮和单选按钮。当我按上述方式进行操作时,我确认它在单击或单击时从 MainActivity 重新启动。是否可以每次立即应用主题更改或在不关闭对话窗口的情况下单击?view
fragment_my
v
dialog_dark
v
selectMode
light
dark
light
dark
ligth
dark