碎片Fragment(页面上加入碎片并合理使用的二种方式和生命周期)

一、静态注册

        布局文件中直接放置fragment节点,可被多个布局文件同时引用(Logo  广告等)

        注意:fragment 节点要增加name属性指定该fragment类的完整路径

        (一) 创建静态Fragment

    public class StaticFragment extends Fragment {

         private Context mContext;
         protected  View view;
         @Nullable
         @Override
         public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle                   savedInstanceState) {
        mContext = getActivity();
        view = inflater.inflate(R.layout.item_box,container,false);
        return view;
         }
    }

       (二) XML中引用

   <fragment
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:name="com.example.yejiajia.myapplication.fragment.StaticFragment"/>

        Fragment的oncreate()操作在Activity之前

二、动态注册配合碎片适配器FragmentStatePagerAdapter使用Fragment       

        Fragment的oncreate()操作在Activity之后  (适用于启动引导页 轮播图banner)

   (一)    动态fragment页面

public class DynamicFragment extends Fragment {

    private String mDesc;
    private View view;
    private Context context;
    private int position;
    private String name;

    public  static DynamicFragment newInstance(int position,String name){
        DynamicFragment fragment = new DynamicFragment();
        Bundle bundle = new Bundle();
        bundle.putInt("position",position);
        bundle.putString("name",name);
        fragment.setArguments(bundle);
        return fragment;
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        context = getActivity();
        if(getArguments() != null)
        {
            position = getArguments().getInt("position");
            name = getArguments().getString("name");
        }
        view = inflater.inflate(R.layout.dynamic_fragment,container,false);
        TextView tv_content = view.findViewById(R.id.tv_content);
        tv_content.setText(name);
        return view;
    }
}

(二)FragmentStatePagerAdapter

public class MobilePagerAdapter extends FragmentStatePagerAdapter {

    private ArrayList<GoodsInfo> mGoodsList = new ArrayList<GoodsInfo>();

    public MobilePagerAdapter(FragmentManager fm, ArrayList<GoodsInfo> list) {
        super(fm);
        mGoodsList = list;
    }

    @Override
    public Fragment getItem(int i) {
        return DynamicFragment.newInstance(i,mGoodsList.get(i).getName());
    }

    @Override
    public int getCount() {
        return mGoodsList.size();
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return mGoodsList.get(position).getName();
    }
}

(三)主页面 

        继承AppCompatActivity或者FragmentActivity

public class FragmentDynamicActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fragment_dynamic);
        PagerTitleStrip titleStrip = findViewById(R.id.title);
        ViewPager viewPager = findViewById(R.id.vp_content);
        titleStrip.setTextSize(TypedValue.COMPLEX_UNIT_SP,20);
        ArrayList<GoodsInfo> goodsInfoArrayList = GoodsInfo.getDefaultList();
        MobilePagerAdapter adapter = new MobilePagerAdapter(getSupportFragmentManager(),goodsInfoArrayList);
        viewPager.setAdapter(adapter);
        viewPager.setCurrentItem(0);
    }


    /**
     * 翻页过程中调用
     * @param i 当前页面序号
     * @param v 当前页面偏移百分比  取值0-1
     * @param i1 当前页面偏移距离
     */
    @Override
    public void onPageScrolled(int i, float v, int i1) {

    }

    /**
     * 翻到哪一页
     * @param i
     */
    @Override
    public void onPageSelected(int i) {

    }

    /**
     * 翻页状态改变时调用  0 静止 1正在滑动 2滑动完毕  1-2-0
     */
    @Override
    public void onPageScrollStateChanged(int i) {

    }


}

三、Fragment 生命周期  比Activity多了5个生命周期

        onAttach:与Activity结合。可在该方法中实例化Activity的一个回调对象,在Fragment中调用Activity的回调方法

        onCreateView:创建碎片视图

        onActivityCreated:在活动页面创建完毕后调用

        onDestroyView:回收碎片视图

        onDetach:与Activity分离

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值