【问题标题】:Open Info Activity without closing Main Activity打开信息活动而不关闭主活动
【发布时间】:2014-04-13 04:16:05
【问题描述】:

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

【问题讨论】:

  • 在你的后退按钮点击 put finish();而不是意图
  • 如此简单。非常感谢!

标签: android android-activity


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    使用

    开始信息活动
    Intent i = new Intent(MainActivity.this, InfoActivity.class);
    startActivityForResult(i, 1);
    

    在 infoactivity 中,只需在按钮单击时调用 finish() 不要再次开始活动。然后您将返回上一个活动

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      相关资源
      最近更新 更多