2

我正在制作一个带有两个活动的简单 android 应用程序。一个 MainActivity 和一个 InfoActivity。我的 ActionBar 上有一个按钮,单击时我想打开我的 InfoActivity。在我的 InfoActivity 中,我有一个后退按钮,它删除了我的 InfoActivity 并再次打开了我的 MainActivity。我可以在不关闭 MainActivity 的情况下打开 InfoActivity 吗?

我正在从 Internet 我的 Main Activity 解析 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);
    }
};
4

2 回答 2

4

我可以在不关闭 MainActivity 的情况下打开 InfoActivity 吗?

不,InfoActivity 会被调用到前台,而 MainActivity 会在后台被调用,因为它会处于 state 中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);
    }
};

或者简单的 call finish(),比如 hamad 和 Aerrow 建议的。然后 InfoActivity 将被销毁,MainActivity 将从堆栈中调用。

于 2013-10-03T09:08:00.883 回答
2

使用开始信息活动

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

并且在信息活动中只需finish()点击按钮点击不要再次开始活动。然后你将回到以前的活动

于 2013-10-03T08:59:32.977 回答