Android中点击Material TextField下拉列表触发空指针异常求助
问题原因与解决方案
这个空指针的核心问题是ArrayAdapter无法正确找到自定义下拉布局中的文本控件,导致Filter在转换结果时触发异常,具体排查和修复方向如下:
检查自定义下拉布局的TextView ID
默认构造的ArrayAdapter会自动查找布局中ID为android:id/text1的TextView。如果你的number_of_players_dropdown_layout里的文本控件ID不是这个,就会导致Filter无法找到目标视图,触发空指针。
修复:要么把下拉布局里的TextView ID改成android:id="@android:id/text1",要么在初始化ArrayAdapter时显式指定自定义的TextView ID。修正ArrayAdapter的初始化代码
若坚持使用自定义ID的TextView,初始化ArrayAdapter时要传入完整参数,指定文本控件的ID:// 假设自定义TextView的ID是R.id.tv_sku_item ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.number_of_players_dropdown_layout, R.id.tv_sku_item, skuList); autoCompleteTextView.setAdapter(adapter);不要省略第四个参数
textViewResourceId,否则ArrayAdapter会默认查找text1,找不到就会引发后续的Filter空指针。排查Firebase数据绑定时机
确保在Firebase回调成功拿到SKU列表后,再初始化并设置Adapter,避免在Activity创建阶段直接绑定空数据。同时对空列表做判空处理:// Firebase数据回调示例 if (skuList != null && !skuList.isEmpty()) { ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.number_of_players_dropdown_layout, R.id.tv_sku_item, skuList); autoCompleteTextView.setAdapter(adapter); } else { autoCompleteTextView.setHint("暂无可用SKU"); }
内容的提问来源于stack exchange,提问作者Learn2Code
相关产品推荐
相关产品推荐

