Android 点击对应按钮跳转后Spinner未加载对应选项问题求助
问题原因及修复方案
核心错误点
- 传参Key不匹配:跳转发起页用
"destination"作为key传值,跳转目标页用"asia"作为key取值,默认返回-1,永远无法进入if判断逻辑。 - 判断条件与索引不对应:发起页的按钮列表添加顺序为
亚洲→欧洲→大洋洲,点击时对应传的索引值分别为0、1、2,目标页判断i==2才加载亚洲数据,逻辑完全错位。 - 缺少多区域适配逻辑:现有代码仅写了亚洲区域的Spinner加载逻辑,点击欧洲、大洋洲按钮无对应适配代码。
修复后代码
跳转目标页(Spinner展示页)
spinnerDestination=findViewById(R.id.spinnerDestination); // 用和发起页一致的key取值 int regionCode = getIntent().getIntExtra("destination", -1); ArrayAdapter<CharSequence> adapter = null; // 根据传过来的区域编码加载对应资源 switch (regionCode) { case 0: // 亚洲按钮对应索引0 adapter = ArrayAdapter.createFromResource(this, R.array.asia, android.R.layout.simple_spinner_item); break; case 1: // 欧洲按钮对应索引1,需提前在strings.xml中定义R.array.europe数组 adapter = ArrayAdapter.createFromResource(this, R.array.europe, android.R.layout.simple_spinner_item); break; case 2: // 大洋洲按钮对应索引2,需提前在strings.xml中定义R.array.oceanic数组 adapter = ArrayAdapter.createFromResource(this, R.array.oceanic, android.R.layout.simple_spinner_item); break; } if (adapter != null) { adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerDestination.setAdapter(adapter); }
跳转发起页
发起页逻辑无需修改,仅需确认Intent跳转的类名MainActivity2和你实际承载Spinner的目标页类名一致即可。
补充注意事项
- 需提前在
res/values/strings.xml中定义好对应区域的字符串数组,否则会报资源找不到异常 - 可额外添加
getIntent().hasExtra("destination")判断,避免无传参时的空指针问题
内容的提问来源于stack exchange,提问作者legna
相关产品推荐
相关产品推荐

