【问题标题】:Activity calls onCreate on BackActivity 在 Back 上调用 onCreate
【发布时间】:2015-02-10 08:54:52
【问题描述】:

我有一个名为 A 的活动,活动 A 上的一些事件调用活动 B。现在,当我在活动 B 中使用向上导航时,它返回到活动 A,但也调用了 onCreate 方法。如果我在后面使用硬件/软键,它不会调用 onCreate 而是返回到它所在的 Activity A。如何使向上导航的行为方式相同?

我的 onCreate 异步进行网络调用。打另一个电话只会浪费数据和时间。 这是我用来从活动 A 启动活动 B 的代码。

Intent intent = new Intent(MainActivity.this, newsIndexActivity.class);
                    intent.putExtra("CityName", cityName.getText());
                    startActivity(intent);

【问题讨论】:

  • 您能提供一些我们的源代码吗?
  • 不要和系统打架:你的父activity可以随时被销毁,所以你需要准备好从头开始创建它(onCreate被调用)
  • 很公平。在这种情况下,我可以检查我的活动是否被破坏?如果没有销毁,为什么要重新创建它?
  • 如果 onCreate 被调用意味着旧的被销毁了
  • 但是如果我使用后退按钮,即使 5 分钟后它也会出现。

标签: java android android-activity oncreate


【解决方案1】:

向上和返回导航不一样,如果您希望向上导航按钮的行为类似于返回按钮,您应该这样做

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            this.finish();
            return true; 
    }
    return super.onOptionsItemSelected(item);
}

如果可能的话,你应该看看这个链接:

您可以在此处获得更多信息。

【讨论】:

  • 试过了。仍然是相同的行为。
【解决方案2】:

通过将父 Activity 的 launchMode 声明为 singleTop,我们可以防止系统在每次按下 Up 时创建新 Activity。

【讨论】:

  • 这对我有用。我在 AndroidManifest.xml 的相关活动中添加了 android:launchMode="singleTop"。
【解决方案3】:

没有任何代码似乎很难解决,但最可能的原因是您正在调用startActivity。只需使用finish() 关闭您当前的活动并使用后台堆栈,它应该会按预期运行。

【讨论】:

    【解决方案4】:

    只需在按钮回调监听器中调用 finish() 或 onBackPressed() 方法即可。

    finish();
    super.onBackPressed();
    

    【讨论】:

    • supre.onBackPressed();。你拼错了supersuper.onBackPressed(); 已致电 finish()
    • 我试过了。没用。每次我使用 UP 按钮时都会调用 OnCreate。
    猜你喜欢
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多