新手,不知道用什么方法實現 ,通過動態的方法顯示了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(); } });
不知道方法對不對,希望大神提供更好的方法,我是小白,代碼太復雜了看不懂。