Fragment的初级应用分类
一.什么是Fragment
1.Fragment作为Activity界面的一部分组成出现,可以在一个Activity中同时出现多个Fragment,并且一个Fragment亦可在多个Activity中使用.
2.在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace()){其中remove()初学的我们还未见过}
3.Fragment也可以叫为“片段”,它可以表示Activity中的行为或用户界面部分。
二.用Fragment能解决什么问题
1.通过将 Activity 布局分成片段,您可以在运行时修改 Activity 的外观,并在由 Activity 管理的返回栈中保留这些更改。如果仅仅只有Activity布局,那是不够的,不仅在手机上有一套布局,同时在平板上还需要设计一套布局,那样维护起来也麻烦,代码上也有一定的冗余,对于APP包的大小也有一定的压力。Fragment的优势是布局在不同设备上的适配。
2.代码复用。特别适用于模块化的开发,因为一个Fragment可以被多个Activity嵌套,有个共同的业务模块就可以复用了,是模块化UI的良好组件。可控性。Fragment可以像普通对象那样自由的创建和控制,传递参数更加容易和方便,也不用处理系统相关的事情,显示方式、替换、不管是整体还是部分,都可以做到相应的更改。
三.Fragment静态加载方法
1.新建类继承Fragment
2.重写OnCreatview
3.使用LayoutInflater对象中的inflate方法绑定布局和控件
4.在Activity对应的布局文件中通过标签引用
package com.lenovo.zy.fragmentde;
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.lenovo.zy.fragmentde.adapter.MyPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class WxActivity extends AppCompatActivity implements View.OnClickListener{
private Button contactBtn;
private Button friendBtn;
private Button newsBtn;
private ViewPager viewPager;
private ContactFragment contactFragment;
private FriendFragment3 friendFragment3;
private NewsFragment newsFragment;
private List<Fragment>fragmentList=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wx);
bindID();
contactFragment=new ContactFragment();
friendFragment3=new FriendFragment3();
newsFragment=new NewsFragment();
fragmentList.add(contactFragment);
fragmentList.add(friendFragment3);
fragmentList.add(newsFragment);
MyPagerAdapter adapter=new MyPagerAdapter(getSupportFragmentManager(),fragmentList);
viewPager.setAdapter(adapter);
}
private void bindID() {
contactBtn= findViewById(R.id.contact_btn);
friendBtn=findViewById(R.id.friend_btn);
newsBtn=findViewById(R.id.news_btn);
viewPager=findViewById(R.id.wx_btn);
contactBtn.setOnClickListener(this);
friendBtn.setOnClickListener(this);
newsBtn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.contact_btn:
viewPager.setCurrentItem(0);
break;
case R.id.friend_btn:
viewPager.setCurrentItem(1);
break;
case R.id.news_btn:
viewPager.setCurrentItem(2);
break;
}
}
}
四.Fragment动态加载方法
1.新建类继承Fragment
2.重写OnCreatview方法
3.使用LayoutInflater对象中的inflate方法绑定布局和控件
4.使用FragmentManager和FragmentTransaction对象进行动态加载
package com.lenovo.zy.fragmentde;
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.lenovo.zy.fragmentde.adapter.MyPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class WxActivity extends AppCompatActivity implements View.OnClickListener{
private Button contactBtn;
private Button friendBtn;
private Button newsBtn;
private ViewPager viewPager;
private ContactFragment contactFragment;
private FriendFragment3 friendFragment3;
private NewsFragment newsFragment;
private List<Fragment>fragmentList=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wx);
bindID();
contactFragment=new ContactFragment();
friendFragment3=new FriendFragment3();
newsFragment=new NewsFragment();
fragmentList.add(contactFragment);
fragmentList.add(friendFragment3);
fragmentList.add(newsFragment);
MyPagerAdapter adapter=new MyPagerAdapter(getSupportFragmentManager(),fragmentList);
viewPager.setAdapter(adapter);
}
private void bindID() {
contactBtn= findViewById(R.id.contact_btn);
friendBtn=findViewById(R.id.friend_btn);
newsBtn=findViewById(R.id.news_btn);
viewPager=findViewById(R.id.wx_btn);
contactBtn.setOnClickListener(this);
friendBtn.setOnClickListener(this);
newsBtn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.contact_btn:
viewPager.setCurrentItem(0);
break;
case R.id.friend_btn:
viewPager.setCurrentItem(1);
break;
case R.id.news_btn:
viewPager.setCurrentItem(2);
break;
}
}
}
五.ViewParger+Fragment实现页卡滑动
package com.lenovo.zy.fragmentde.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;
/**
* Created by pc on 2018/3/6.
*/
//public class MyPagerAdapter extends FragmentPagerAdapter{
// public MyPagerAdapter(FragmentManager fm) {
// super(fm);
// }
public class MyPagerAdapter extends FragmentPagerAdapter{
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();
}
}