【问题标题】:Parent activity keeps reseting when navigating back from child从孩子导航回来时,父母活动不断重置
【发布时间】:2017-05-26 03:18:40
【问题描述】:

当我使用意图从父 Activity 移动到另一个,然后使用操作栏导航返回父 Activity 时,父 Activity 丢失了我的所有更改和值(作为用户)并返回到默认 xml 显示我有它。

我的子活动 OnCreate 中有这些:

 ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);

并适当地标记了我的父母活动:

android:parentActivityName=".MainActivity"

在活动之间旅行时,我需要什么让它存储或记住这些变化?

【问题讨论】:

    标签: android android-studio android-activity


    【解决方案1】:

    在 Manifest 文件中,您应该像这样设置 android:launchMode:

    <!-- ACTIVITY -->
            <activity
                android:name=".activities.MainActivity"
                android:configChanges="orientation|screenSize"
                android:launchMode="singleTask"
                android:screenOrientation="portrait"/>
    

    P.s:在此链接上阅读启动模式: https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

    【讨论】:

    • 不错!其他人对“singletop”启动模式的建议也有效,但在阅读了您提供的材料后认为“singleTask”是最合适的启动模式。感谢您提供更多信息以供阅读:)
    • @Destreation 实际上,singleTask 启动模式的使用应该只在非常特殊的情况下使用(比如在主屏幕替换中),而不是像这样的标准导航情况。这里使用singleTop 应该足以回到MainActivity 的现有实例。 singleTask 启动模式带有许多奇怪的行为,将来可能会给您带来很多痛苦。阅读Providing UP navigation
    • @DavidWasser:你能解释一下“奇怪的行为”吗?
    • 如果您愿意,可以查看我关于singleTasksingleInstance 的许多其他帖子。 singleTask 使您的应用无法与其他应用集成,您的应用不能有多个“启动”活动(不会导致问题),您的应用不能在多个任务中运行(不会导致问题)。使用singleTasksingleInstance 启动模式的影响没有详细记录,但是使用这些特殊启动模式的用户报告了数百个问题,因为他们不了解这些影响。既然没有必要...
    • ...不推荐,真的没有理由使用它。使用 singleTop 启动模式将完全符合 OP 使用“标准”启动模式的要求。
    【解决方案2】:

    有几个选项可以尝试 -

    1) 使用startActivityForResult() 开始新活动

    2)在manifest文件中,设置父activity的android:launchMode="singleTop"

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      单击导航按钮时,您可能正在创建父级的新实例。一个简单的方法是完成您的活动,这样后台堆栈中的任何活动都将简单地恢复。

      类似这样的:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        • 1970-01-01
        • 2021-08-04
        • 2018-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多