【问题标题】:Android - Click on ActionBar app icon, create new activity instanceAndroid - 单击 ActionBar 应用程序图标,创建新的活动实例
【发布时间】:2012-12-27 11:10:46
【问题描述】:

我的 Android 应用中有一个 ActionBar(API 级别 14)。 有一个带有我的应用程序图标的主页按钮。在 MainActivity 我在 EditText 视图中写了一个短文本。 当我导航到 PreferenceActivity 时,图标会显示一个箭头来指示我,我可以导航到主页 Activity (MainActivity)。

  // PreferenceActivity-onCreate
  ActionBar actionBar = getActionBar();
  actionBar.setDisplayHomeAsUpEnabled(true);

我在 ActionBar 中单击该应用程序图标以返回 MainActivity

// PreferenceActivity
@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
   switch (item.getItemId()) 
   {
     case android.R.id.home:
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        return true;
     default:
        return super.onOptionsItemSelected(item);
   }
}

现在我的 MainActivity 再次创建,EditText 中的文本消失了。 我认为我可以通过 Intent.FLAG_ACTIVITY_CLEAR_TOP 保持 MainActivity 的活力。 我想要一种行为,就像我在设备上使用返回按钮一样。

【问题讨论】:

    标签: android android-intent android-activity android-actionbar


    【解决方案1】:

    如果要返回MainActivity 的现有实例,则需要这样做:

    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    

    单独使用 CLEAR_TOP 会导致创建 MainActivity 的新实例。

    【讨论】:

    • 这种方式行不通。但是当我写 2 addFlags 它工作正常。意图.addFlags(意图.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    • 啊...很抱歉,您需要一个“|”而不是“||”在 2 个标志之间。我的错。您需要 按位 OR,而不是 逻辑 OR。我已经编辑了我的答案。
    • 对,我得注意一下
    • 我已在操作栏选项卡中加载了 webview。我开始在选项卡内单击按钮的意图。我已经为我的意图指定了上述两个标志。但是 webview 总是被重新创建。我为我的活动指定了 android:configChanges="orientation|keyboardHidden|screenSize"。但是仍然会重新创建活动 webview。我该如何解决这个问题?请帮帮我。
    【解决方案2】:

    我相信这是正确的做法。 https://stackoverflow.com/a/15933890/238768

    使用 Intent.FLAG_ACTIVITY_CLEAR_TOP 将导致与 Gepro 想要做的完全相反的行为!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 2021-03-04
      • 2013-05-27
      相关资源
      最近更新 更多