Android开发:Spinner选择跳转Activity时按钮点击崩溃,需实现对应内容展示
问题修复:Spinner选择后跳转Activity崩溃及内容展示实现
崩溃原因
- 空指针异常:MainActivity里的
cLogo变量未通过findViewById初始化,直接调用setImageResource触发崩溃。 - 组件操作逻辑错误:试图在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
相关产品推荐
相关产品推荐

