我正在嘗試在片段中使用資料系結時向微調器添加選項,但它不起作用,我不明白為什么
class AddTransaction: Fragment() {
private var _binding: TransactionAddFragmentBinding? = null
private val binding get() = _binding!!
lateinit var spinner: Spinner
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = TransactionAddFragmentBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
fun spinner() {
spinner = binding.spinnerCategory
spinner.adapter = ArrayAdapter.createFromResource(
requireContext(), R.array.categories, R.layout.transaction_add_fragment)
}
}
uj5u.com熱心網友回復:
根據您發布的內容,您很可能永遠不會呼叫您的spinner()函式,這意味著您從未設定配接器以使其保持為空。
您還傳遞R.layout.transaction_add_fragment給微調器配接器,這可能不是您想要的。您在那里傳遞的布局資源應該用于微調器行。
不要將它放在單獨的函式中,只需將其添加到 中onViewCreated,如下所示:
class AddTransaction: Fragment() {
private var _binding: TransactionAddFragmentBinding? = null
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = TransactionAddFragmentBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// set the adapter here, and there is no need to make a separate "spinner"
// class member since "binding" is already a class member that contains
// the spinner
binding.spinnerCategory.adapter = ArrayAdapter.createFromResource(
requireContext(), R.array.categories, android.R.layout.simple_spinner_item)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/490331.html
