1.需要2个布局。在一哥隐藏一个显示
llHomeDefault.setVisibility(View.GONE);
flItemList.setVisibility(View.VISIBLE);
itemListFragment = new ItemListFragment();
FragmentManager fragmentManager = getChildFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fl_ltem_list, itemListFragment, "ItemList");
fragmentTransaction.commit();
2.这里是用add和remove的方法,每次都是隐藏fragment1,每次需要移除掉新添加的fragment2,然后每次进来都是新的fragment2
homeScrollview.setVisibility(View.VISIBLE);
llHomeDefault.setVisibility(View.VISIBLE);
flItemList.setVisibility(View.GONE);
/**
* 这里2段代码同时使用,目的是是否创建一个新的子frgament
*/
FragmentTransaction transaction = (getActivity()).getSupportFragmentManager().beginTransaction();
transaction.remove(itemListFragment);
transaction.commit();// 提交事务
一.第二方法就是每次都移除掉,还是原来的这里是add和方法需要判断是否加载,但是需要加一个tag的方法,否则会报错已经加载了
1)
llHomeDefault.setVisibility(View.GONE);
flItemList.setVisibility(View.VISIBLE);
itemListFragment = new ItemListFragment();
if (!itemListFragment.isAdded() && null == fragmentManager.findFragmentByTag("ItemList")) {
fragmentTransaction.add(R.id.fl_ltem_list, itemListFragment, "ItemList");
fragmentTransaction.commit();
}
二,同样的方法需要hide,不能使用remove,否则下一次进来就是白色空白
2)这里需要注意的是,我初始化fragment2的时候是在点击跳转的时候而不是在init,如果需要做hide可以在init里面只初始化一次
,但是需要需要每次进去都是最新的就需要每次都new一个新的,但是你可以定义为全局变量
llHomeDefault.setVisibility(View.VISIBLE);
flItemList.setVisibility(View.GONE);
/**
* 这里2段代码同时使用,目的是是否创建一个新的子frgament
*/
if (!itemListFragment.isAdded()) {
transaction.hide(itemListFragment);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);// 设置转换动画
transaction.commit();// 提交事务
}
这里有一个问题是fragment嵌套的问题,当你在子的fragment中需要用到
一下的
llHomeDefault.setVisibility(View.GONE); flItemList.setVisibility(View.VISIBLE); FragmentManager fragmentManager = getChildFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); itemListFragment = new ItemListFragment(); fragmentTransaction.add(R.id.fl_ltem_list, itemListFragment, "ItemList"); fragmentTransaction.commit();
llHomeDefault.setVisibility(View.VISIBLE); flItemList.setVisibility(View.GONE); FragmentManager fragmentManager = getChildFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.remove(itemListFragment); fragmentTransaction.commit();// 提交事务
最后在viewpager滑动事件的生命周期里面进行判断就好了