对话框中的微调器没有选项

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
}