[ RongExceptionHandler ] uncaughtException java.lang.Nul

[ RongExceptionHandler ] uncaughtException
                                            java.lang.NullPointerException: Attempt to read from field 'int android.support.v4.app.Fragment.mContainerId' on a null object reference
                                                at android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1017)
                                                at android.support.v4.app.FragmentTransition.calculateFragments(FragmentTransition.java:976)
                                                at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:95)
                                                at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)
                                                at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)
                                                at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013)
                                                at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710)
                                                at android.os.Handler.handleCallback(Handler.java:739)
                                                at android.os.Handler.dispatchMessage(Handler.java:95)
                                                at android.os.Looper.loop(Looper.java:145)
                                                at android.app.ActivityThread.main(ActivityThread.java:5981)
                                                at java.lang.reflect.Method.invoke(Native Method)
                                                at java.lang.reflect.Method.invoke(Method.java:372)
                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

最近在做底部导航栏切换的时候,遇到这样一个bug, 发现切换fragment的时候,怎么会报空指针呢?

  代码如下:

    

rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        Fragment currentFragment = fragmentManager.findFragmentByTag(fragmentTag);
        FragmentTransaction tr = fragmentManager.beginTransaction();
        tr.hide(currentFragment);
        switch (checkedId) {
            case R.id.rb_home:
                fragment = fragmentManager.findFragmentByTag(HomeFragment.TAG);
                fragmentTag = HomeFragment.TAG;
                if (fragment == null) {
                    fragment = new HomeFragment();
                }
                break;
            case R.id.rb_social:
                fragment = fragmentManager.findFragmentByTag(SocialFragment.TAG);
                fragmentTag = SocialFragment.TAG;
                if (fragment == null) {
                    fragment = new SocialFragment();
                }
                break;
            case R.id.rb_buy:
                fragment = fragmentManager.findFragmentByTag(ShopMallFragment.TAG);
                fragmentTag = ShopMallFragment.TAG;
                if (fragment == null) {
                    fragment = new ShopMallFragment();

                }
                break;
            case R.id.rb_crowd:
                //fragment = fragmentManager.findFragmentByTag(CrowdFragment.TAG);
                //fragmentTag = CrowdFragment.TAG;
                fragment = fragmentManager.findFragmentByTag(CrowdListFragment.TAG);
                fragmentTag = CrowdListFragment.TAG;
                if (fragment == null) {
                    //fragment = new CrowdFragment();
                    fragment = new CrowdListFragment();
                }
                break;
            case R.id.rb_me:
                fragment = fragmentManager.findFragmentByTag(UserFragment.TAG);
                fragmentTag = UserFragment.TAG;
                if (fragment == null) {
                    fragment = new UserFragment();
                }
                break;
        }
        if (fragment != null && fragment.isAdded()) {
            tr.show(fragment);
        } else {
            tr.add(R.id.content, fragment, fragmentTag);
        }
        tr.addToBackStack(null);
        tr.commitAllowingStateLoss();
    }
});
 
其实就是这句代码报错!  在进行隐藏的时候,加上一个非空判断就可以了
  tr.hide(currentFragment);//

 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值