大佬教程收集整理的这篇文章主要介绍了android – 视图寻呼机片段中的子片段在交换后消失,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,我有一个带有视图寻呼机的主要活动.其中有2个页面,每个页面都有2个操作栏标签.
我还有一个抽屉有4个选项,前两个是视图寻呼机中的2个页面,第二个是不是的页面.如果您选择第二个中的一个,我将我的ViewPager配置为用另外两个片段交换片段.所有这些片段都是单例,因此来回切换不会导致任何内存问题.
在切换到第二组片段时,其中一个片段中有一个框架,用于在选择按钮时交换子片段.这就是问题所在.在第一次加载该片段后,它可以正常工作.但是如果你使用抽屉切换到第一组,然后再次回到第二组,子片段就会消失.在那之后你做任何其他事情后,它往往会崩溃.
这是它的崩溃日志
01-10 15:55:05.272: E/messageQueue-JNI(21034): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(android.support.v4.app.Fragment)' on a null object reference
如果我在代码中玩一下,我会得到类似的东西.这两个错误是我似乎产生的最多错误:
01-10 16:00:13.072: E/AndroidRuntime(22227): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.ClassLoader android.support.v4.app.FragmentActivity.getClassLoader()' on a null object reference
我可以继续在框架视图上调用replace(),因此它不会消失.所以我猜这不是问题.它
这是一些相关的代码.
片段的代码:
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceStatE) { View view = inflater.inflate(R.layout.calculator,container,falsE); final FragmentManager fragmentManager = getChildFragmentManager(); if(afFrag == null && topFrag == null){ afFrag = CalculatorAfFragment.geTinstance(); topFrag = CalculatorTopFragment.geTinstance(); Fragmenttransaction fragmenttransaction = fragmentManager.begintransaction(); fragmenttransaction.replace(R.id.calc_frame,afFrag,"afFrag").commit(); } RadioGroup typeGroup = (RadioGroup) view.findViewById(R.id.type_buttons); typeGroup.setOncheckedchangelistener(new Oncheckedchangelistener() { public void oncheckedChanged(RadioGroup group,int checkedId) { if (checkedId == R.id.af_button){ Fragmenttransaction fragmenttransaction = fragmentManager.begintransaction(); fragmenttransaction.replace(R.id.calc_frame,"afFrag").commit(); } else if (checkedId == R.id.top_button){ Fragmenttransaction fragmenttransaction = fragmentManager.begintransaction(); fragmenttransaction.replace(R.id.calc_frame,topFrag,"topFrag").commit(); } } }); return view;
FragmentStatePagerAdapter代码:
@Override public Fragment getItem(int position) { if(tools){ return toolsFragmentsList.get(position); } else { return guidesFragmentsList.get(position); } } @Override public int getItemPosition(Object object) { return POSITION_NONE; } public void swapFragments(int position){ if (tools){ tools = false; stores = false; notifyDataSetChanged(); this.setPriMaryItem(mPager,position-1,getItem(position - 1)); } else { tools = true; notifyDataSetChanged(); this.setPriMaryItem(mPager,position-4,getItem(position - 4)); } }
以上是大佬教程为你收集整理的android – 视图寻呼机片段中的子片段在交换后消失全部内容,希望文章能够帮你解决android – 视图寻呼机片段中的子片段在交换后消失所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。