Android Studio中AlertDialog弹窗内Spinner选项值不显示该如何解决
问题根因
- 核心错误为Spinner控件查找对象不匹配:你现有代码中调用的
findViewById(R.id.spindoc)是Activity的方法,只会检索当前Activity通过setContentView加载的布局树中的控件,而弹窗内的Spinner属于单独inflate出来的R.layout.activity_attach_form布局,不在Activity的布局树内,导致你初始化的Spinner实际为null,自然无法加载预设选项。
修复方案
将Spinner的初始化逻辑移到弹窗布局inflate之后,使用inflate返回的View对象查找Spinner即可,修改后的代码如下:
btnimage.setOnClickListener(v->{ // 加载弹窗布局 View view = LayoutInflater.from(Attach.this).inflate(R.layout.activity_attach_form,null); // 使用弹窗布局对象查找Spinner并初始化 Spinner spindoc = view.findViewById(R.id.spindoc); String[] doc = {"select", "doc1", "doc2", "doc3"}; spindoc.setOnItemSelectedListener(this); ArrayAdapter<String> adapter1 = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, doc); adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spindoc.setAdapter(adapter1); AlertDialog.Builder builder = new AlertDialog.Builder(Attach.this); builder.setView(view); AlertDialog alertDialog = builder.create(); alertDialog.show(); });
额外注意项
你当前Spinner的XML布局中配置了android:layout_marginTop="-20dp",负上边距可能会将Spinner的显示区域挤出父布局可视范围,导致选中值看不到,验证功能时可先删除该属性测试,确认功能正常后再调整间距参数。
内容的提问来源于stack exchange,提问作者Venkatesh
相关产品推荐
相关产品推荐

