android – 视图寻呼机片段中的子片段在交换后消失

android – 视图寻呼机片段中的子片段在交换后消失,第1张

概述所以这是一个复杂的问题,但我会尽量让它变得容易. 首先,我有一个带有视图寻呼机的主要活动.其中有2个页面,每个页面都有2个 *** 作栏标签. 我还有一个抽屉有4个选项,前两个是视图寻呼机中的2个页面,第二个是不是的页面.如果您选择第二个中的一个,我将我的ViewPager配置为用另外两个片段交换片段.所有这些片段都是单例,因此来回切换不会导致任何内存问题. 在切换到第二组片段时,其中一个片段中有一个框架 @H_502_0@所以这是一个复杂的问题,但我会尽量让它变得容易.

首先,我有一个带有视图寻呼机的主要活动.其中有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));        }    }
解决方法 尝试通过mPager.setID(VIEw.generateVIEwID())在VIEwPager上设置唯一ID. 总结

以上是内存溢出为你收集整理的android – 视图寻呼机片段中的子片段在交换后消失全部内容,希望文章能够帮你解决android – 视图寻呼机片段中的子片段在交换后消失所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/web/1135521.html

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

发表评论

登录后才能评论

评论列表(0条)

保存