2017-08-23 103 views
0

我有3個片段,如片段A,片段B,片段C。最初片段A被加載並且片段A添加片段B,類似片段B再次添加片段C.現在,當我點擊後臺壓縮或片段C中的任何buttoms時,它顯示直接片段A.爲什麼它沒有顯示片段B?我只想刪除當前的片段c並顯示片段b,但請幫助我。這裏是我的代碼。如何從另一個片段中刪除當前添加的子片段?

//This is FragmentA and it adds FragmentB 
fragmentManager = getSupportFragmentManager(); 
      fragmentTransaction = fragmentManager.beginTransaction(); 
      fragmentTransaction.add(R.id.activity_main,new FragmentB()); 
      fragmentTransaction.addToBackStack(null); 
      fragmentTransaction.commit(); 

//This is FragmentB and it adds FragmentC 
FragmentManager fragmentManager = getChildFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
      fragmentTransaction.add(R.id.publicCommunication,new FragmentC()); 
      fragmentTransaction.addToBackStack(null); 
      fragmentTransaction.commit(); 

//This is FragmentC and button is available remove cuurent fragment. now here is my problem , it removes both fragmentC and FragmentB and Shows FragmentA. I want it to show FragmentC but it is not showing it shows fragmentA. 
button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       FragmentManager manager = getActivity().getSupportFragmentManager(); 
       manager.popBackStackImmediate(); 
      } 
     }); 

回答

0
在你的代碼

,您不添加任何片段到堆棧中,你只添加片段的活性,所以你需要改變這一行: - fragmentTransaction.addToBackStack(NULL);與此: - fragmentTransaction.addToBackStack(「With your unique string」);

將此添加到您的兩個片段事務中。 然後提交。

+0

您好,謝謝你爲了快速回應。但是我仍然無法做到這一點,即使把字符串值同時添加到addtobackStack fragmentA和FragmentB中。你能否更清楚地描述它..這是一種善意的請求..謝謝。 – Shures

+0

你可以看到你正在使用不同的管理器,我認爲只從一個管理器彈出,例如FragmentManager manager = getFragmentManager(); manager.popBackStackImmediate(); –

+0

謝謝#Ayush Khare ...它成功了再次感謝你... – Shures

0

您所呼叫的活動片段經理彈出堆棧中,但它似乎沒有這個經理「傳播」的流行,以兒童經理

更改onClick代碼如下

button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      FragmentManager manager = getFragmentManager(); 
      manager.popBackStackImmediate(); 
     } 
    });