内容简介:周末,有位同学在微信公共号后台,给我留言,说看了我之前写两篇文章,每次进入下一个Fragment不管任务栈里是否存在该Fragment的实例,都会创建一个新的实例而不会复用。为了说明问题,我录了一个GIF
周末,有位同学在微信公共号后台,给我留言,说看了我之前写两篇文章, 谷歌官方组件Navigation你了解了吗? 、 谷歌官方组件Navigation你会用了吗? 之后,也在尝试使用Navigation,但是使用的过程当中遇到了问题:
每次进入下一个Fragment不管任务栈里是否存在该Fragment的实例,都会创建一个新的实例而不会复用。
为了说明问题,我录了一个GIF
这样就会出现一个问题,可能我们之前的OneFragment保存一些状态或者数据,当我们跳转OneFragment的时候,因为创建新的实例导致我们之前保存状态或者数据全部消失。
popUpTo/popUpToInclusive
在action当中设置两个属性
app:popUpTo="@id/oneFragment" app:popUpToInclusive="true" 复制代码
我们可以实现如下的效果:
注意如果要实现以上效果我们应该注意一下几个地方:
1.如果我们用Kotlin语言,那么我们在gradle当中引用的地方的类库,需要改成
implementation "android.arch.navigation:navigation-fragment-ktx:$nav_version" // use -ktx for Kotlin implementation "android.arch.navigation:navigation-ui-ktx:$nav_version" // use -ktx for Kotlin 复制代码
2.这样我们在Fragment当中调用的方法为:
findNavController().navigate(R.id.action_oneFragment_to_twoFragment) 复制代码
注意这里,引用的findNavController包为:
import androidx.navigation.fragment.findNavController 复制代码
3.resource id替换为action id 看过我之前代码的同学,可能会注意到我特意强调
findNavController().navigate(R.id.action_oneFragment_to_twoFragment) 复制代码
这里的id最好用action id,这一种可以配合着action里的动画使用,当然也可以配合着action里的属性popUpTo popUpToInclusive来使用。
之前有位同学在公共号给我留言,问下了Demo之后,为什么设置 popUpTo/popUpToInclusive不起作用,问题就在这里应该是action Id
代码我已经更新,欢迎star和下载。如有问题欢迎给我留言!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Iptables详解+实例
- Tomcat优化实例详解
- Angularjs Promise实例详解
- Hibernate 修改数据的实例详解
- MongoDB 查询操作的实例详解
- Vuejs 单文件组件实例详解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Iterative Methods for Sparse Linear Systems, Second Edition
Yousef Saad / Society for Industrial and Applied Mathematics / 2003-04-30 / USD 102.00
Tremendous progress has been made in the scientific and engineering disciplines regarding the use of iterative methods for linear systems. The size and complexity of linear and nonlinear systems arisi......一起来看看 《Iterative Methods for Sparse Linear Systems, Second Edition》 这本书的介绍吧!