安卓 - 无法再次打开片段

4

我正在打开一个fragment,很快就会关闭它。

第一次它可以正常打开和关闭,但第二次尝试打开时会出现NullPointerException错误。

使用扩展FragmentSomeFrag类打开fragment。要关闭它,调用closeFrag()方法。

public class SomeFrag extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        mRootview = (ViewGroup) inflater.inflate(R.layout.somefrag, container, false); // line with error
        return mRootview;
    }

    public void closeFrag(){
        ((ViewGroup)mRootview.getParent()).removeView(mRootview);
    }
}

为什么我无法第二次打开片段?
1个回答

1

要删除一个Fragment,您应该使用一个事务,例如:

getSupportFragmentManager().beginTransaction().remove(fragmentInstance).commit();

我该如何获取fragmentInstance?我尝试了Fragment frag = mActivity.getFragmentManager().findFragmentById(R.id.llFrag);,但最终出现了NullPointerException错误。 - K3NN3TH
1
明白了,我使用了这个:mActivity.getFragmentManager().beginTransaction().remove(this).commit(); - K3NN3TH
最简单的方法是将其保留为成员变量。如果您从片段类中调用该代码段,应该能够使用关键字this - Blackbelt
我在得到答案之前回答自己的问题,是否可以获得积分?!? - K3NN3TH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接