2013-10-03 218 views
2

我正在制作一个简单的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:使用

Intent i = new Intent(MainActivity.this, InfoActivity.class); 
startActivityForResult(i, 1); 

和infoactivity

private View.OnClickListener onBackBtnClick = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(InfoActivity.this, MainActivity.class); 
     startActivity(intent); 
    } 
}; 
+1

在你的后退按钮中点击放完();而不是意图 – Aerrow

+0

这么简单。非常感谢你! – Jojo

回答

3

我可以在不关闭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将从堆栈中调用。

+0

非常感谢! – Jojo

1

开始信息活动只需拨打finish()按钮点击不要再开始活动,然后你会回到预先vious活动