Kotlin Fragment场景下Spinner无法填充下拉选项问题求助
问题修复指引
- 布局ID与代码绑定ID不匹配
代码中通过binding获取的控件ID是nutSpinner,但布局文件里Spinner的实际ID为desSpinner,二者不一致会导致代码拿到的控件与布局渲染的控件不对应,可选择将布局ID改为@+id/nutSpinner,或者将代码中取值改为binding.desSpinner保持一致。 - 适配器配置代码全部被注释
现有Kotlin代码中所有和ArrayAdapter初始化、给Spinner设置适配器的逻辑都被包裹在注释块中,没有实际执行,Spinner自然没有可加载的选项数据。 - 多余的布局inflate逻辑无效
你已经使用ViewBinding方案,不需要额外inflate新的布局实例再调用findViewById找控件,直接通过binding获取的控件操作即可。
修复后的代码示例
Kotlin业务代码
//Setting Spinner Info val weight_units = resources.getStringArray(R.array.weight_units) // 此处控件名需和布局ID保持一致 val nut_spinner = binding.nutSpinner if (nut_spinner != null) { // 初始化适配器 val nut_adapter = ArrayAdapter<String>(requireContext(), android.R.layout.simple_spinner_item, weight_units) // 配置下拉列表项布局,不可省略 nut_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) // 给Spinner绑定适配器 nut_spinner.adapter = nut_adapter }
布局Spinner代码(适配上述代码的ID版本)
<Spinner android:id="@+id/nutSpinner" android:layout_width="97dp" android:layout_height="36dp" android:layout_marginTop="76dp" android:layout_marginEnd="16dp" android:layout_marginRight="16dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView2" />
内容的提问来源于stack exchange,提问作者SureThing
相关产品推荐
相关产品推荐

