Fragment的由来与应用

Fragment

Fragment的意思

 *fragment中文翻译过来就是碎片*

Fragment 能解决什么问题

fragment的出现就是为了解决局部布局的问题,而且使用Fragment可以在一个activity的不同界面里面灵活的切换,而且还可以解决不同屏幕分辩率的问题。

Fragment 的优点

第一点就是可以在不同界面实现灵活的跳转,第二点就是解决activity间的不流畅,第三点就是Fragment 可以管理自己的生命周期和布局,最后一点就是他不需要在AndroidManifest注册,就可以直接使用。

Fragment 的注意点

如果需要兼容4.0以下的系统,需要引用v4下的Fragment

Fragment 静态加载

第一步先新建fragment包,在包里面创建fragmentOne和fragmentTwo,特别注意的是创建这两个fragment的时候底下两个√要去掉,第二步就是在main的xml文件中,修改布局和添加帧布局,最后一点要导的是APP的包,记住fragment里面要返回view。

  <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:gravity="center"
        android:text="Hello World!"
        android:textSize="20sp" />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <fragment
            android:id="@+id/f_one"
            android:name="fragment.FragmentOne"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <fragment
            android:id="@+id/f_two"
            android:name="fragment.FragmentTwo"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />

    </LinearLayout>
View view1=inflater.inflate(R.layout.fragment_two, container, false);
        return view1;

Fragment 动态加载

第一步就是新建一个新的tianmaoactivity,修改一下自己的布局,在原本布局里面嵌入一个相对布局,添加两个按钮,在布局外面加上一个帧布局。
第二步就是创建fragment帧布局,记住返回的是view,改一下背景颜色,最后在activity里面绑定id和添加监听事件,调用onclick的方法

<LinearLayout
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <Button
            android:id="@+id/nan_btn"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:text="男装"
            />

        <Button
            android:id="@+id/nv_btn"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:text="女装"
            />
    </LinearLayout>

    <FrameLayout
        android:id="@+id/shop_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </FrameLayout>
        View v2=inflater.inflate(R.layout.fragment_nan, container, false);
        return v2;
         View v1 = inflater.inflate(R.layout.fragment_nv, container, false);
        return v1;

底下的一段代码就是,在tianmaoactivity里面创建FragmentManager对象和创建FragmentTransaction对象,在switch语句里面,这时候我们需要判断一下是不是真的存在fragmentNan或fragmentNv,如果没有就需要创建新的,最后一步记得要提交。

 @Override
    public void onClick(View view) {
        FragmentManager manager=getFragmentManager();//创建FragmentManager对象
        FragmentTransaction transaction=manager.beginTransaction();//创建FragmentTransaction对象
        switch (view.getId()) {
            case R.id.nan_btn:

                if(fragmentNan==null){
                    fragmentNan=new FragmentNan();

                }
                transaction.replace(R.id.shop_content,fragmentNan);
                break;
            case R.id.nv_btn:
             //显示女装

               if(fragmentNv==null){
                 fragmentNv=new FragmentNv();

               }
                transaction.replace(R.id.shop_content,fragmentNv);
                break;
            default:
                break;
        }
        transaction.commit();//最后一步要提交

ViewPager+fragment实现页卡切换

第一步就是先创建adapter的包,然后创建一个MyPagerAdapter来继承FragmentPagerAdapter,然后使用快捷键Alt加回车键。

 private  List<Fragment> mfragmentList;


    public MyPagerAdapter(FragmentManager fm, List<Fragment> fragmentList) {
        super(fm);
        this.mfragmentList=fragmentList;
    }

    @Override
    public Fragment getItem(int position) {
        return mfragmentList.get(position);
    }

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

第二步就是在fragment包里面创建三个空的fragment,这边导的包是v4下面的,然后在activity_wx里面修改一下布局,使用viewPager标签,给ViewPager赋上id。

   <android.support.v4.view.ViewPager
        android:id="@+id/wx_vp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/wx_bottom">

    </android.support.v4.view.ViewPager>

第三步就是使用一个嵌入式的线性布局,在里面添加三个button按钮,赋上各自的id,这边使用权重属性。


    <LinearLayout
        android:id="@+id/wx_bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">


        <Button
            android:id="@+id/contact_btn"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:text="联系人" />


        <Button
            android:id="@+id/friend_btn"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:text="朋友圈" />


        <Button
            android:id="@+id/news_btn"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:text="动态" />


    </LinearLayout>

第四步在WxActivity里面定义属性,

private Button contactBtn;
    private Button friendBtn;
    private Button newsBtn;

    private ContactFragment contactFragment;
    private FriendFragment friendFragment;
    private NewsFragment newsFragment;

    private List<Fragment> fragmentList = new ArrayList<>();
    private ViewPager viewPager;

接下来就是熟悉的绑定id和添加监听事件了

    private void bindID() {
        contactBtn = findViewById(R.id.contact_btn);
        friendBtn = findViewById(R.id.friend_btn);
        newsBtn = findViewById(R.id.news_btn);
        contactBtn.setOnClickListener(this);
        friendBtn.setOnClickListener(this);
        newsBtn.setOnClickListener(this);
    }

底下的这段代码就是创建新的三个界面的fragment对象,然后添加到定义的 fragmentList里面,调用onclick方法,在switch语句里面,如果你想点那个页面,就到那个页面,那么可以使用viewPager.setCurrentItem()方法,

  contactFragment = new ContactFragment();
        friendFragment = new FriendFragment();
        newsFragment = new NewsFragment();


        fragmentList.add(contactFragment);
        fragmentList.add(friendFragment);
        fragmentList.add(newsFragment);

最后一步就是创建适配器和绑定适配器了。

  //创建适配器
        MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), fragmentList);
        //绑定适配器
        viewPager.setAdapter(adapter);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值