Bootstrap

加入第三方sdk后包冲突引起的找不到符号 commitNow() ,commitNowAllowingStateLoss()系列问题的解决

代码如下,

getSupportFragmentManager()
        .beginTransaction()
        .remove((Fragment) view)
        .commitNowAllowingStateLoss();

编译异常,提示找不到符号commitNowAllowingStateLoss()

  FragmentTransaction transaction = mFragmentManager.beginTransaction();
        List<Fragment> fragments = mFragmentManager.getFragments();
        if (transaction == null || fragments == null || fragments.size() == 0)
            return;
        boolean doCommit = false;
        for (Fragment fragment : fragments) {
            if (fragment != this) {
                transaction.remove(fragment);
                doCommit = true;
            }
        }
        if (doCommit)
            transaction.commitNow();

提示找不到符号commitNow()

引入第三方sdk后这样的。分析是support v4包的兼容性问题。

其间走了很多弯路,比如修改gradle文件 添加

     configurations {
         all*.exclude group: 'com.android.support', module: 'support-v4'
        all*.exclude group:'com.android.support', module:'support-annotations'
     }

发现无效。

解决办法:
1.解除关联,删除module。删除module中的build.gradle文件,导入到项目,自动生成module的gradle文件,如果不能,重复上述操作。
2.确保 项目与module中的v4版本号一致。
3.重新编译。

;