关于Fragment

关于android studio

什么是fragment?

Fragment也可以叫为“片段”,但我觉得“片段”中文叫法有点生硬,还是保持叫Fragment比较好,它可以表示Activity中的行为或用户界面部分。我们可以在一个Activity中用多个Fragment组合来构建多窗格的UI,以及在多个Activity中重复使用某个Fragment。它有自己的生命周期,能接受自己的输入,并且可以在 Activity 运行时添加或删除Fragment(有点像在不同 Activity 中重复使用的“子 Activity”)。

简单来说,Fragment其实可以理解为一个具有自己生命周期的控件,只不过这个控件又有点特殊,它有自己的处理输入事件的能力,有自己的生命周期,又必须依赖于Activity,能互相通信和托管。

fragment能解决什么问题?

    能解决在一个页面里的小界面的跳转

  • 代码复用。特别适用于模块化的开发,因为一个Fragment可以被多个Activity嵌套,有个共同的业务模块就可以复用了,是模块化UI的良好组件。
  • Activity用来管理Fragment。Fragment的生命周期是寄托到Activity中,Fragment可以被Attach添加和Detach释放。
  • 可控性。Fragment可以像普通对象那样自由的创建和控制,传递参数更加容易和方便,也不用处理系统相关的事情,显示方式、替换、不管是整体还是部分,都可以做到相应的更改。
  • Fragments是view controllers,它们包含可测试的,解耦的业务逻辑块,由于Fragments是构建在views之上的,而views很容易实现动画效果,因此Fragments在屏幕切换时具有更好的控制。

fragment静态代码

import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.win.myapplication.fragement.BlankFragment;
import com.example.win.myapplication.fragement.BlankFragment2;
import com.example.win.myapplication.fragement.nanzhuangFragment;
import com.example.win.myapplication.fragement.nvzhuangFragment;

public class tianmaoActivity extends AppCompatActivity implements View.OnClickListener{
private Button nan;
private Button nv;
private nanzhuangFragment nanzhuang;
private nvzhuangFragment nvzhuang;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tianmao);
        bindID();
    }

        private void bindID() {
        nan=findViewById(R.id.nanzhuang_btn);
        nv=findViewById(R.id.nvzhuang_btn);
        nan.setOnClickListener(this);
            nv.setOnClickListener(this);
        }


        @Override
        public void onClick(View view) {
            FragmentManager manager=getFragmentManager();
            FragmentTransaction transaction=manager.beginTransaction();

        switch (view.getId()){
            case R.id.nanzhuang_btn:

                if (nanzhuang==null)
                {
                    nanzhuang = new nanzhuangFragment();
                }
                transaction.replace(R.id.shop_content,nanzhuang);
                break;
            case R.id.nvzhuang_btn:

                if (nvzhuang==null)
                {
                    nvzhuang = new nvzhuangFragment();

                }
                transaction.replace(R.id.shop_content,nvzhuang);
                break;
default:
    break;


        }
           transaction.commit();
}}

fragment动态代码+viewpaper页面滑动

class:

import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.win.myapplication.adapter.myadapter;
import com.example.win.myapplication.fragement.PengyouFragment;
import com.example.win.myapplication.fragement.PengyouquanFragment;
import com.example.win.myapplication.fragement.XiaoxiFragment;

import java.util.ArrayList;
import java.util.List;

public class weixinActivity extends AppCompatActivity implements View.OnClickListener{

    private Button liangxiren;
    private Button pengyouquan;
    private Button xiaoxi;
    private ViewPager viewPager;
    private PengyouFragment pengyouFragment;
    private PengyouquanFragment pengyouquanFragment;
    private XiaoxiFragment xiaoxiFragment;
    private List<Fragment> fragmentList=new ArrayList<>();



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_weixin);

        bindID();
        pengyouFragment= new PengyouFragment();
        pengyouquanFragment= new PengyouquanFragment();
        xiaoxiFragment= new XiaoxiFragment();
        fragmentList.add(pengyouFragment);
        fragmentList.add(pengyouquanFragment);
        fragmentList.add(xiaoxiFragment);
        myadapter adapter=new myadapter(getSupportFragmentManager(),fragmentList);
        viewPager.setAdapter(adapter);

    }



    private void bindID() {
        liangxiren=findViewById(R.id.lxr_btn);
        pengyouquan=findViewById(R.id.pyq_btn);
        xiaoxi=findViewById(R.id.xx_btn);
        viewPager=findViewById(R.id.wx);
        liangxiren.setOnClickListener(this);
        pengyouquan.setOnClickListener(this);
        xiaoxi.setOnClickListener(this);

    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
        case R.id.lxr_btn:
            viewPager.setCurrentItem(0);
            break;
            case R.id.pyq_btn:
                viewPager.setCurrentItem(1);
                break;
            case R.id.xx_btn:
                viewPager.setCurrentItem(2);
                break;
                default:
                    break;


    }
}


}

适配器adapter:

import android.app.FragmentManager;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.List;



public class myadapter extends FragmentPagerAdapter{
    public List<Fragment> mFragmentList;
    public myadapter(android.support.v4.app.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();
    }
}
activity就不展示了。。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值