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

Android findFragmentByTag在执行fragmenttransaction的replcae方法后返回null,android,android-fragments,Android,Android Fragments,嗨,我是新来的。有人能帮我吗 我有一个回调函数,每次单击按钮都会调用它。在下面的代码Ist time执行中,一切正常,但在执行transaction.replace方法后,firstfragment将永远变为null。因为它是一个回调函数,所以这个方法将被多次调用,每次当firstfragment变为null时,它将不会执行事务方法(内部条件:if(firstfragment!=null))。 我的代码如下所示: private void returnToFragmentB(){

嗨,我是新来的。有人能帮我吗

我有一个回调函数,每次单击按钮都会调用它。在下面的代码Ist time执行中,一切正常,但在执行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();   
        }
                }
    }

这是因为您使用的是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(); 

谢谢我尝试了aove场景,但仍然得到firstfragment=null。根据你的建议,我使用了firstfragment标记来隐藏它,但是没有人能帮我吗?你能发布更多的代码吗,比如你在哪里定义和设置你的firstfragment?