You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:36:03