我正在制作一个包含两个 Activity 的简单 Android 应用程序。一个 MainActivity 和一个 InfoActivity。我的 ActionBar 上有一个按钮,点击后我想打开我的 InfoActivity。在我的 InfoActivity 中,我有一个后退按钮,它会删除我的 InfoActivity 并再次打开我的 MainActivity。我可以在不关闭 MainActivity 的情况下打开 InfoActivity 吗?
我正在从互联网解析 JSON 我的主要 Activity ,我不希望它在我关闭 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);
}
};
最佳答案
我可以在不关闭 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);
}
};
或者像 hamad 和 Aerrow 建议的那样简单调用 finish()
。然后 InfoActivity 将被销毁,MainActivity 将从堆栈中调用。
关于android - 在不关闭主 Activity 的情况下打开信息 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19154760/