我什么时候可以在 AlertView 中编辑视图

At what point can I edit views in an AlertView

我想用我的自定义对话框生成器创建一个通用的 AlertView 对话框。我的对话框应该有一些 TextViews 和 Buttons,只有在文本设置较早时才应该显示。我的问题是我找不到任何可以安全访问这些视图而不会出现 NullPointerException 的地方。

这是我的 DialogBu​​ilder class

class DialogBuilder : DialogFragment() {

...

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val builder = AlertDialog.Builder(activity)
        val inflater = activity?.layoutInflater
        val view = inflater?.inflate(R.layout.dialog_builder_fragment, null)
        builder.setView(view)
        val dialog = builder.create()
        fillViews()
        initListeners()
        return dialog
    }

...

private fun fillViews() {
        if (headline.isNotBlank()) {
            headline_text_view.text = headline
            headline_text_view.visibility = View.VISIBLE
        }
        ...
}

当我想设置标题文本时,fillViews 抛出异常。我用 onViewCreated(), onStart(), ... 尝试过,但似乎没有任何效果。我该如何实施?

假设您的 headLine 和 headline_text_view 在 dialog_builder_fragment 内。您应该将视图作为 fillViews 函数参数传递,然后像这样调用您的文本视图。

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    val builder = AlertDialog.Builder(activity)
    val inflater = activity?.layoutInflater
    val view = inflater?.inflate(R.layout.dialog_builder_fragment, null)
    builder.setView(view)
    val dialog = builder.create()
    fillViews(view)
    initListeners()
    return dialog
}

...

private fun fillViews(view: View) {
    if (view.headline.isNotBlank()) {
        view.headline_text_view.text = headline
        view.headline_text_view.visibility = View.VISIBLE
    }

}