Android Studio按钮跳转Activity空白,返回后才显示内容问题
问题分析与解决方案:跳转FishInfo Activity后显示空白,返回才正常
我一眼就揪出问题所在了——你每个按钮的点击事件里都连续启动了两次FishInfo Activity!
比如看barbsButton的点击逻辑:
barbsButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent intent = new Intent(getBaseContext(), FishInfo.class); intent.putExtra("typeName", "Barbs"); startActivity(intent); // 第一次启动:带数据的页面 Intent i = new Intent(getApplicationContext(),FishInfo.class); startActivity(i); // 第二次启动:完全空的页面 } });
点击按钮时,系统会先加载第一个带typeName数据的FishInfo页面,但紧接着又启动了一个不带任何Extra数据的新FishInfo页面。这时候你看到的是第二个空页面(所以显示XML里默认的"Name"和"Info"文本),当你按返回键关闭这个空页面后,才会显示之前那个带正确数据的页面。
解决方法很简单:
删除每个按钮点击事件中第二次启动Activity的冗余代码,只保留携带Extra数据的那一次启动即可。
修改后的barbsButton点击事件示例:
barbsButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent intent = new Intent(getBaseContext(), FishInfo.class); intent.putExtra("typeName", "Barbs"); startActivity(intent); // 只保留这一行 } });
其他所有按钮(bettasButton、tetrasButton等)都要做同样的修改——删掉那行Intent i = new Intent(...)和对应的startActivity(i)。
额外提醒:
确保你的FishInfo Activity里正确读取了Intent携带的数据,不然即使传了数据也显示不出来。比如在FishInfo的onCreate方法里添加以下代码:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fish_info); TextView nameTextView = findViewById(R.id.nameOfFish); TextView infoTextView = findViewById(R.id.fishInfo); Intent receivedIntent = getIntent(); if (receivedIntent != null) { // 获取传递的类型名称 String fishTypeName = receivedIntent.getStringExtra("typeName"); // 获取传递的类型信息(注意有些按钮没传这个值,要做非空判断) String fishTypeInfo = receivedIntent.getStringExtra("typeInfo"); // 更新TextView内容,为空时保留默认文本 nameTextView.setText(fishTypeName != null ? fishTypeName : "Name"); infoTextView.setText(fishTypeInfo != null ? fishTypeInfo : "Info"); } }
这样修改后,点击按钮就能直接打开带正确数据的FishInfo页面,不会再出现空白返回才显示的问题了。
内容的提问来源于stack exchange,提问作者B. Sommer
相关产品推荐
相关产品推荐

