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