findFragmentByTag在执行fragmenttransaction的replcae方法后返回null

时间:2014-03-09 02:26:20

标签: android android-fragments

嗨,我是新片段。有人可以帮帮我吗?

我有一个回调函数,每按一次按钮就会调用它。在下面的代码中,Ist时间执行一切正常但在执行transaction.replace方法之后,firstfragment永远变为null。因为它是一个回调函数所以这个方法将被多次调用,每次当firstfragment变为null时,它将不执行事务方法(内部条件:if(firstfragment!= null))。 我的代码如下:

private void returnToFragmentB(){
        if (_provider != null)
        {
            android.support.v4.app.FragmentManager manager = getActivity().getSupportFragmentManager();
        if(firstfragment !=null)
                {
        classA obj = firstfragment.getdata();
            FragmentTransaction transaction = manager.beginTransaction();
            Fragment secondfragment = FragmentB.newInstance(_provider, null, obj.getdata1(), obj.getdata2());
            transaction.replace(R.id.fragment_container, secondfragment);
            transaction.addToBackStack(null);
            transaction.commit();   
        }
                }
    }

1 个答案:

答案 0 :(得分:0)

那是因为你正在使用replace方法,这意味着你的第一个片段被删除并被替换,如果你想要两个片段,你应该使用add方法并隐藏第一个片段。

实施例

FragmentTransaction transaction = manager.beginTransaction();
Fragment secondfragment = FragmentB.newInstance(_provider, null, obj.getdata1(), obj.getdata2());
transaction.add(R.id.fragment_container, secondfragment);
transaction.hide(yourFirstFragmentTAG);
transaction.addToBackStack(null);
transaction.commit();