2016-11-23 25 views
1

我在另一個片段中有一個片段,我添加並確保它成功,但是當我想刪除它時,它不起作用,並始終是它的位置。不能刪除另一個兒童片段

主要活動片段

public class MainActivityFragment extends Fragment { 
    ScreenUtility screenUtility; 

    public MainActivityFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.fragment_main, container, false); 

     screenUtility = new ScreenUtility(getActivity()); 

     TotalAmountFragment totalAmountFragment; 
     totalAmountFragment = new TotalAmountFragment(); 

     if (screenUtility.getOrientation() == 1){ 
      getChildFragmentManager() 
        .beginTransaction() 
        .add(R.id.main_total_amount_fragment_container, totalAmountFragment, "totalPrice") 
        .commit(); 
     } else if (screenUtility.getOrientation() == 2 && getChildFragmentManager().findFragmentByTag("totalPrice") != null){ 
      FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); 
      transaction.remove(totalAmountFragment); 
      transaction.commit(); 
      transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE); 
     } 
     return v; 
    } 
} 

XML文件

... 
<FrameLayout 
      android:id="@+id/main_total_amount_fragment_container" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:foregroundGravity="center" 
      android:layout_centerHorizontal="true"/> 

我應該怎麼辦?我做了我想到的任何事情。

回答

0

試試這個代碼

FragmentManager fm = getActivity().getSupportFragmentManager(); 
if (fm.getBackStackEntryCount() != 0) { 
     fm.popBackStack(); 
    } 
+0

不工作!如果平板電腦在第一次啓動時處於橫向模式,則不會添加片段,並且當我將其旋轉至縱向時,孩子片段可以正確顯示,但是當我再次旋轉設備以進行橫向拍攝時,它不會被移除! – altruistic

+0

你爲什麼不直接更換碎片? – Madhav

+0

替換爲什麼? – altruistic

0
if (screenUtility.getOrientation() == 1){ 
     getFragmentManager() 
       .beginTransaction() 
       .add(R.id.main_total_amount_fragment_container, totalAmountFragment, "totalPrice") 
       .commit(); 
    } else { 
     Fragment priceFragment = getActivity().getSupportFragmentManager().findFragmentByTag("totalPrice"); 
     if (priceFragment != null){ 
      getActivity().getSupportFragmentManager().beginTransaction().remove(priceFragment).commit(); 
     } 
    }