打开信息活动而不关闭主活动

时间:2013-10-03 08:50:24

标签: android android-activity

我正在制作一个包含两个活动的简单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);
    }
};

2 个答案:

答案 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(),就不要再次启动活动。然后您将返回上一个活动