博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Navigation(三)问题详解——Fragment创建新的实例
阅读量:5913 次
发布时间:2019-06-19

本文共 1380 字,大约阅读时间需要 4 分钟。

背景

之前有人说看了我之前写两篇文章,之后,也在尝试使用Navigation,但是使用的过程当中遇到了问题:

每次进入下一个Fragment不管任务栈里是否存在该Fragment的实例,都会创建一个新的实例而不会复用。
为了说明问题,我录了一个GIF
Navigation(三)问题详解——Fragment创建新的实例
这样就会出现一个问题,可能我们之前的OneFragment保存一些状态或者数据,当我们跳转OneFragment的时候,因为创建新的实例导致我们之前保存状态或者数据全部消失。

popUpTo/popUpToInclusive

在action当中设置两个属性

app:popUpTo="@id/oneFragment"   app:popUpToInclusive="true"

我们可以实现如下的效果:

Navigation(三)问题详解——Fragment创建新的实例

注意如果要实现以上效果我们应该注意一下几个地方:

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如有问题欢迎给我留言!

问题依旧....

看似,我们在回退的时候,正常了。但是,我们的问题依旧存在,每次点击的时候依然会创建一个新的Fragment,一个新的实例,只是我们在创建新的实例的时候,把之前的给清除了而已。

我会在下一篇文章介绍如何解决这个问题!

文末送福利啦!!

同时我经过多年的收藏目前也算收集到了一套完整的学习资料以及高清详细的Android架构进阶学习导图及笔记免费分享给大家,希望对想成为架构师的朋友有一定的参考和帮助。

**下面是部分资料截图,诚意满满:特别适合有开发经验的Android程序员们学习。

Navigation(三)问题详解——Fragment创建新的实例

资料免费领取方式:现在关注我并且加入群聊

群号:1018342383
或者是点击链接加入群聊【Android开发交流】:**

转载于:https://blog.51cto.com/14332859/2398194

你可能感兴趣的文章
用户与用户组管理
查看>>
【MySQL】数据库逻辑备份工具(mysqldump)
查看>>
CentOS 6.8 手工安装 Firefox
查看>>
【栈】POJ 1028 Web Navigation
查看>>
[文摘]JDK里的设计模式
查看>>
jQuery节点操作
查看>>
初学大数据需要了解哪些方面的知识?
查看>>
深入浅出解析OpenFlow
查看>>
使用CSS3(和一点JavaScript)创建一个非画布侧面菜单
查看>>
为什么苹果照片电脑打不开 heic是什么文件
查看>>
能量山水画家武湲承:搬运时空能量,聚藏山水画中
查看>>
谈一次异步上传到又拍云的案例教程
查看>>
【Ubuntu】IBM资料学习笔记
查看>>
C#接收命令行参数的代码
查看>>
xcode svn的操作(1)
查看>>
判断ip的有效性---boost
查看>>
android activity之间传递对象
查看>>
最全Handler源码解剖
查看>>
史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
查看>>
大流量、高负载场景 Nginx+Linux 性能调优
查看>>