我正在制作一个简单的android应用程序,有两个活动。一个主要活动和一个信息活动。我的actionbar上有一个按钮,单击后我想打开我的infoactivity。在我的infoactivity中,我有一个back按钮,它删除了我的infoactivity并再次打开我的mainactivity。我可以在不关闭主活动的情况下打开infoactivity吗?
我正在解析来自internet的json我的主要活动,我不希望它在我关闭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);
}
};
最佳答案
我可以在不关闭主活动的情况下打开infoactivity吗?
不,infoactivity将被调用到前台和后台的mainactivity,因为它将处于stopped
状态。问题是,如果像这样在infoactivity中激发意图,那么除了旧实例之外,还会有mainactivity的新实例。
在意向调用中添加一个标志,以阻止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);
}
};
或者简单的呼叫,就像哈马德和艾罗建议的那样。然后infoactivity将被销毁,mainactivity将从堆栈中调用。