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

Android开发:Spinner选择跳转Activity时按钮点击崩溃,需实现对应内容展示

问题修复:Spinner选择后跳转Activity崩溃及内容展示实现

崩溃原因

  1. 空指针异常:MainActivity里的cLogo变量未通过findViewById初始化,直接调用setImageResource触发崩溃。
  2. 组件操作逻辑错误:试图在MainActivity中操作ActivityOne的ImageView组件,不同Activity的组件不能跨实例直接修改,正确做法是通过Intent传递选择信息,在目标Activity中加载对应资源。

修复后的代码

MainActivity.java

public class MainActivity extends AppCompatActivity {
    Spinner companies;
    Button infoButton;
    Button linkButton;
    ArrayList<String> alCompanies;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        companies = findViewById(R.id.main_sp_companies);
        infoButton = findViewById(R.id.main_btn_info);
        linkButton = findViewById(R.id.main_btn_link);
        
        alCompanies = new ArrayList<>();
        alCompanies.add("Google");
        alCompanies.add("Microsoft");
        
        ArrayAdapter<String> arrayAdapterCompanies = new ArrayAdapter<>(
                this,
                android.R.layout.simple_spinner_item, 
                alCompanies
        );
        arrayAdapterCompanies.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        companies.setAdapter(arrayAdapterCompanies);
        
        infoButton.setOnClickListener(view -> {
            String selectedCompany = companies.getSelectedItem().toString();
            Intent intent = new Intent(MainActivity.this, ActivityOne.class);
            intent.putExtra(ActivityOne.EXTRA_INFO, selectedCompany);
            startActivity(intent);
        }); 
    }
}

ActivityOne.java

public class ActivityOne extends AppCompatActivity {
    public static final String EXTRA_INFO = "info";
    ImageView cLogo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_one);
        
        // 替换成你ActivityOne布局中ImageView的真实ID
        cLogo = findViewById(R.id.activity_one_logo);
        
        String selectedCompany = getIntent().getStringExtra(EXTRA_INFO);
        
        if ("Google".equals(selectedCompany)) {
            cLogo.setImageResource(R.drawable.googlelogo);
            cLogo.setContentDescription("Google Logo");
        } else if ("Microsoft".equals(selectedCompany)) {
            // 注意检查资源文件名拼写,避免因拼写错误导致资源找不到
            cLogo.setImageResource(R.drawable.microsoftlogo);
            cLogo.setContentDescription("Microsoft Logo");
        }
    }
}

额外注意事项

  • 确认ActivityOne的布局文件中存在ImageView组件,且findViewById使用的ID与布局中完全一致。
  • 检查drawable资源文件名的拼写正确性,避免出现资源找不到的异常。
  • 确保ActivityOne已在AndroidManifest.xml中完成注册。

内容的提问来源于stack exchange,提问作者shmookh qattan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:31:01