如何在fragment里面实现一键退出功能

如何在fragment里面实现一键退出功能,第1张

在 MainActivity中建立 Fragment栈 记录切换过的Fragment 然后监听 返回键----》判断Fragment栈长度是否为1(为1说明只有当前Fragment在栈中)----》不为1,当前Fragment出栈,然后显示栈顶Fragment----》直到栈长度为1,则退出系统。

需要做的准备

新建一个android项目,主Activity命名为MainActivity

创建三个Fragment1 Fragment2 Fragment3

为三个Fragment创建三个布局文fragment1.xml、fragment2.xml、fragment3.xml

布局 activity_main.xm

fragment1.xml样例

Fragment1样例

另外的可以根据样例进行修改

activity_main.xml内容

activity打开时需要显示一个fragment,也就是需要先向容器中添加一个fragment

这是就能显示第二个fragment了,那么如何切换不同的fragment呢,切换的过程如下

开启事务

调用事务的replace方法,将当前容器的fragment替换为新的fragment

提交事务

注意上图红框中的addToBackStack方法,很多人都不是很清楚这个方法的实际作用,说一下程序运行时候的现象你就明白了

初始化时显示的是 fragment2

实践1 :fragment2------点击按钮frag1-----按返回键--------退出应用

实践2: fragment2-----点击按钮frag3 -----按返回键--------返回到fragment2

为啥会出现上面的情况,原因就是切换到fragment3时,调用了addToBackStack方法,这时会将fragment2先入栈,然后再切换到fragment3,按返回键的时候fragment3销毁,fragment2出栈显示,而切换到fragme1时没有将fragme2入栈,所以fragment2就直接销毁了,再按返回键就直接退出应用了

Android中使用fragment来实现页面的切换,如果导致应用停止运行,可能的原因如下:

Fragment所绑定的activity已经被销毁,而程序引用了activity,报空指针就会意外退出。

Fragment新建之后,没有进行commit *** 作,导致无法实例化该Fragment。

解决的方式是在使用activity时,进行判断,如下代码:

@Override

public void onHiddenChanged(boolean hidd) {

if (!hidd && getActivity() != null) {

System.out.println("是否执行了这个方法")

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12008437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存