当前位置: 首页 > 知识库问答 >
问题:

忽略Navigate()调用:FragmentManager已经保存了它的状态

蔚元明
2023-03-14

我在主活动中使用导航,然后启动第二活动(用于结果)。在完成第二个活动后,我想继续在主活动中导航,但碎片管理器已经保存了他的状态。

打开导航。findNavController(视图)。导航(R.id.action\u next,bundle)我收到日志消息:

Ignoring navigate() call: FragmentManager has already saved its state

如何继续导航?

共有3个答案

万开畅
2023-03-14

我这样解决了这个问题:

    @Override
public void onActivityResult() { //inside my fragment that started activity for result
        model.navigateToResults = true; //set flag, that navigation should be performed
}

然后呢

    @Override
public void onResume() { //inside fragment that started activity for result
    super.onResume();

    if(model.navigateToResults){
        model.navigateToResults = false;
        navController.navigate(R.id.action_startFragment_to_resultsFragment);
    }
}

不确定,如果这不是一个可怕的黑客,但它对我有效。FramgenManager状态在这一点上恢复(onResume),导航没有问题。

莫河
2023-03-14

最后,我通过简单的调用super来解决这个问题。onPostResume(),然后导航到还原状态。

瞿宏儒
2023-03-14

您必须始终在活动的onActivityResult中调用super.onActivityResult()。这就是:

>

  • 解锁Fragments,以便它们可以进行片段事务(即避免状态已保存错误)

    向调用startActivityForResult的片段调度onActivityResult回调。

  •  类似资料:
    • 我正在我的一个应用程序中使用新的android导航框架。应用程序的目的是充当启动器。 有时,当我尝试更改片段(使用navcontroller导航)时,它不会更改片段,而是记录下来 我知道之前有人问过这个问题,忽略navigate()调用:FragmentManager已经保存了它的状态,但没有解决方案。 我使用以下代码导航: Navigation.findNavController(视图)。id.

    • 我正在为maven多模块项目研究缓存实现(exstremescale),我在下面添加了maven依赖项 添加了缓存注释 cache-manager.xml 缓存只适用于项目的一个maven模块,我可以看到缓存拦截器调用,对于maven模块的其余部分,它忽略了@cacheable注释(它不会进入拦截器)。 我们没有PostConstructor或自我调用 我们使用atomikos作为事务管理器和CX

    • 问题内容: 我有一个使用Subversion进行版本控制的设置文件。每个人都有该文件的副本,我需要永远不要提交它。但是,就像我说的那样,已经有一个副本受版本控制。我的问题是: 如何在不删除每个人的文件的情况下从版本控制中删除此文件,然后将其添加到忽略列表中,以使其不会提交? 我正在使用linux命令行svn。 问题答案: 进行干净签出,然后添加忽略文件。然后提交。其他所有人都必须小心(一次),下次

    • 我试图从现有数据库(MySQL)中使用liquibase(3.5.5)。 > C: /液化酶-3.5.5/liquibase。bat—驱动程序=com。mysql。jdbc。驱动程序^--classpath=C:/Libraries/mysql-connector-java-5.1.37-bin。jar^--changeLogFile=db。变更日志。xml^--url=“jdbc:mysql:/

    • 使用上面的代码片段,是否可以测试忽略调用IgnoreCall的方法。ignoreMethod(Bean)而不需要将整个语句置于布尔条件下? 以下是单元测试代码片段: 注意事项: 重构。即使是糟糕的OO设计,重构也是代价高昂的 方法签名被锁定,除非另一个模式适用于替换 尝试使用Mockito。当和PowerMockito时。在目标静态方法上执行时,存根在运行时调试上不起作用

    • 我正在为RESTAPI建立一个Laravel项目。基本上,我将用户分为两个表,用户和管理员(模型名)。我想使用默认的Laravel身份验证框架通过web guard对管理员进行身份验证,并使用JWT(tymondesigns提供的包)通过api guard对用户进行身份验证。一切都很顺利。我配置了软件包,在app/auth.php中设置了防护和提供者,并使其几乎正常工作。 我现在可以通过Auth