删除所有片段会导致错误

时间:2016-04-29 12:32:46

标签: android android-fragments

我有一个AsyncTask,可以获取一些东西并根据收到的数据创建一些片段。如果没有返回数据,我会这样做:

if (data.size() == 0) {
    List<Fragment> fragments = getChildFragmentManager().getFragments();
    if (fragments != null) {
        FragmentTransaction txn = getChildFragmentManager().beginTransaction();
        for (Fragment fragment : fragments) txn.remove(fragment);
        txn.commit();
    }
}

这段代码导致&#34;尝试写入字段&#39; int android.support.v4.app.Fragment.mNextAnim&#39;在null对象引用&#34;。知道为什么吗?

我想,也许在构建事务期间,一些旧事务异步挂起,所以我添加了

getChildFragmentManager().executePendingTransactions() 

在构建交易之前调用。仍然存在错误。

1 个答案:

答案 0 :(得分:1)

通常,当您尝试从事务中删除空片段引用时会发生此错误。试试吧。

 if (data.size() == 0) {
            List<Fragment> fragments = getChildFragmentManager().getFragments();
            if (fragments != null) {
                FragmentTransaction txn = getChildFragmentManager().beginTransaction();
                for (Fragment fragment : fragments) {
                    if (fragment != null){
                        txn.remove(fragment);
                    }
                }
                txn.commit();
            }
        }