大佬教程收集整理的这篇文章主要介绍了被另一个片段覆盖的Android片段仍然是已显示而不是onPause,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@Override public void onPause() { super.onPause(); getActivity().unregisterReceiver(receiver); Bundle args = getArguments(); int tab = args.geTint("Tab"); Log.d(log,String.format("Tab1Fragment %d onPause",tab)); } @Override public void onResume() { super.onResume(); IntentFilter filter = new IntentFilter("de.foo.BACkPressed"); receiver = new MyReceiver(); getContext().registerReceiver(receiver,filter); Bundle args = getArguments(); int tab = args.geTint("Tab"); Log.d(log,String.format("Tab1Fragment %d onResume",tab)); }@H_772_8@另外,在广播接收器中,我检查片段的可见性以确保,只有可见片段可以处理BACkPressed事件:
if (intent.getAction().equals("de.foo.BACkPressed")) { if (getView() != null && getView().isShown()) { ... } }@H_772_8@当我用另一个片段替换现有的和可见的片段时,不会在被替换的片段上调用onPause().它的广播接收器仍然启用.也是新片段中的接收器.这两个片段对于getView().isShown()都是真的,但事实并非如此:只有最后一个片段是可见的.
我怎样才能实现只有可见片段的反应呢?
编辑:第一个片段加载到我的标签栏的标签0中.我得到日志“Tab1Fragment 0 onResume”并启用广播接收器.@H_674_19@在此片段中,用户点击列表条目以显示html页面.我使用以下代码执行此操作:
HTML_Fragment newFragment = new HTML_Fragment(); newFragment.setArguments(extras); FragmentManager fm = getFragmentManager(); Fragmenttransaction ft = fm.begintransaction(); ft.replace(R.id.content,newFragment); ft.addToBACkStack(null); ft.commit();@H_772_8@HTML_Fragment现在在相同的空间中开始,我看到日志“HTMLFragment 0 onResume”.现在只能看到HTML_Fragment,但我没有得到日志“Tab1Fragment 0 onPause”.两个片段的广播接收器现在都是活动的.那是我的问题.
>确保您将旧片段替换为新片段,而不是在旧片段之上添加新片段:
// to show the root fragment getSupportFragmentManager().begintransaction(). replace(R.id.container,new FragmentA()). commit(); .... // to show subfragment (i.e. fragment which is replacing the root fragment) getSupportFragmentManager().begintransaction(). replace(R.id.container,new FragmentB()).addToBACkStack(null). commit();@H_772_8@在这段代码片段中,FragmentA的onPause()将在FragmentB的onResume()之前调用(当你点击FragmentB的on-onPause() – > FragmentA的onResume()时).
replace()
– 与使用相同的containerViewId添加的所有当前添加的片段调用remove(Fragment)相同,然后使用相同的参数添加(int,Fragment,String).而add()
– 只是将一个片段添加到活动状态.如果您只是添加()新片段(或添加两者,然后只是通过show()/ hide()切换它们) – 一些生命周期方法将从您身上溜走.
如果有帮助,请告诉我.
以上是大佬教程为你收集整理的被另一个片段覆盖的Android片段仍然是已显示而不是onPause全部内容,希望文章能够帮你解决被另一个片段覆盖的Android片段仍然是已显示而不是onPause所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。