我什么时候可以在 AlertView 中编辑视图
At what point can I edit views in an AlertView
我想用我的自定义对话框生成器创建一个通用的 AlertView 对话框。我的对话框应该有一些 TextViews 和 Buttons,只有在文本设置较早时才应该显示。我的问题是我找不到任何可以安全访问这些视图而不会出现 NullPointerException 的地方。
这是我的 DialogBuilder 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
}
}
我想用我的自定义对话框生成器创建一个通用的 AlertView 对话框。我的对话框应该有一些 TextViews 和 Buttons,只有在文本设置较早时才应该显示。我的问题是我找不到任何可以安全访问这些视图而不会出现 NullPointerException 的地方。
这是我的 DialogBuilder 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
}
}