我正在制作一个包含两个活动的简单Android应用程序。一个MainActivity和一个InfoActivity。我的ActionBar上有一个按钮,点击后我想打开我的InfoActivity。在我的InfoActivity中,我有一个后退按钮,它会删除我的InfoActivity并再次打开我的MainActivity。我可以在不关闭MainActivity的情况下打开InfoActivity吗?
我正在从我的主要活动中解析JSON,我不希望它在关闭InfoActivity时再次加载所有内容。
打开InfoActivity的代码:
private View.OnClickListener onInfoBtnClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, InfoActivity.class);
startActivity(intent);
}
};
关闭InfoActivity类中InfoActivity的代码:
private View.OnClickListener onBackBtnClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(InfoActivity.this, MainActivity.class);
startActivity(intent);
}
};
答案 0 :(得分:4)
我可以在不关闭MainActivity的情况下打开InfoActivity吗?
不,InfoActivity将在后台调用前台和MainActivity,因为它将处于状态stopped
。问题是如果你像这样在你的InfoActivity中触发Intent,除了旧实例之外,还会有一个MainActivity的新实例。
在Intent调用中添加一个标志以阻止MainActivity的新实例。然后它将从堆栈中调用。
private View.OnClickListener onBackBtnClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(InfoActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
};
或简单的电话finish()
,如hamad和Aerrow所建议的那样。然后将销毁InfoActivity,并从堆栈中调用MainActivity。
答案 1 :(得分:1)
使用
启动信息活动Intent i = new Intent(MainActivity.this, InfoActivity.class);
startActivityForResult(i, 1);
并且在infoactivity中,只需在按钮点击时调用finish()
,就不要再次启动活动。然后您将返回上一个活动