Fragment之間通過add切換時的顯示與隱藏


 

新手,不知道用什么方法實現 ,通過動態的方法顯示了Fragment   A,在這個里面點擊列表項時add方法動態加載Fragment  B,但是兩者都會一起顯示,重疊在一起了,如果用replace方法,那么返回時原來的A內容就變化了,不是用戶點擊以前的了。個人的想法時在加載B時在B中隱藏A,當B退出時再把A顯示出來,經過實踐,效果還行。

1. 創建A時,使用tag,方便在B中找到它。

 if (fragtwo==null){
     fragtwo=new twoFragment();
     FT.add(R.id.layFrame,fragtwo,"FA");
}else{
     FT.show(fragtwo);
}

在A中創建B.

 lv_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               String url= filelist[position].toString();
                FragmentManager Fm=getFragmentManager();
                FragmentTransaction FT=Fm.beginTransaction();
                Fragvideo=VideoFragment.newInstance(url);
                FT.add(R.id.layFrame, Fragvideo,"FB");
                FT.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                FT.addToBackStack(null);
                FT.commit();
            }
        });

  

在Fragment  B的 onCreateView中查找到A,然后隱藏起來,先定義一個Fragment,在不同的事件中使用。

private Fragment Fm;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        vi=inflater.inflate(R.layout.fragment_video, container, false);
        Fm=getFragmentManager().findFragmentByTag("Ftwo");
        getFragmentManager().beginTransaction().hide(Fm).commit();

}

在B中我是通過一個按鈕來返回A的,在返回中讓A顯示出來,彈出B

 btn_fh.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getFragmentManager().beginTransaction().show(Fm).commit();
               getFragmentManager().popBackStack();
               // getActivity().onBackPressed();
            }
 });

 

不知道方法對不對,希望大神提供更好的方法,我是小白,代碼太復雜了看不懂。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM