对话框中的微调器没有选项
Spinner in dialog has no options
我创建了一个带有自定义布局的 DialogFragment
。此布局有一个 AppCompactSpinner
需要填充 4 个选项。这是片段的代码:
class ReportDialog : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return activity?.let {
val builder = AlertDialog.Builder(it)
builder.setView(R.layout.fragment_report_dialog)
builder.create()
} ?: throw IllegalStateException("Activity cannot be null!")
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
view.reportSpinner.adapter = ArrayAdapter(
requireContext(),
R.layout.dropdown_menu_popup_item,
arrayOf(
"Option1",
"Option2",
"Option3",
"Option4"
)
)
view.reportSpinner.setSelection(0)
}
}
我在 activity 中使用此片段来显示单击按钮时的对话框。一切正常,除了微调器是空的,没有任何选项。我做错了什么?
永远不会调用 onViewCreated,因此您需要像这样将微调器适配器创建逻辑放在 onCreateDialog 中:
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return requireContext().let {
val builder = AlertDialog.Builder(it)
builder.setView(getDialogSpinner())
builder.create()
} ?: throw IllegalStateException("Activity cannot be null!")
}
private fun getDialogSpinner(): View {
val view = LayoutInflater.from(requireContext()).inflate(R.layout.item, null)
view.coolSpinner.adapter = ArrayAdapter(
requireContext(),
android.R.layout.simple_spinner_item,
arrayOf(
"Option1",
"Option2",
"Option3",
"Option4"
)
)
view.coolSpinner.setSelection(0)
return view
}
我创建了一个带有自定义布局的 DialogFragment
。此布局有一个 AppCompactSpinner
需要填充 4 个选项。这是片段的代码:
class ReportDialog : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return activity?.let {
val builder = AlertDialog.Builder(it)
builder.setView(R.layout.fragment_report_dialog)
builder.create()
} ?: throw IllegalStateException("Activity cannot be null!")
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
view.reportSpinner.adapter = ArrayAdapter(
requireContext(),
R.layout.dropdown_menu_popup_item,
arrayOf(
"Option1",
"Option2",
"Option3",
"Option4"
)
)
view.reportSpinner.setSelection(0)
}
} 我在 activity 中使用此片段来显示单击按钮时的对话框。一切正常,除了微调器是空的,没有任何选项。我做错了什么?
永远不会调用 onViewCreated,因此您需要像这样将微调器适配器创建逻辑放在 onCreateDialog 中:
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return requireContext().let {
val builder = AlertDialog.Builder(it)
builder.setView(getDialogSpinner())
builder.create()
} ?: throw IllegalStateException("Activity cannot be null!")
}
private fun getDialogSpinner(): View {
val view = LayoutInflater.from(requireContext()).inflate(R.layout.item, null)
view.coolSpinner.adapter = ArrayAdapter(
requireContext(),
android.R.layout.simple_spinner_item,
arrayOf(
"Option1",
"Option2",
"Option3",
"Option4"
)
)
view.coolSpinner.setSelection(0)
return view
}