fragment的添加方法

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滑动事件的生命周期里面进行判断就好了

 

你可能感兴趣的:(fragment添加,frgament)