在viewpage第三课的基础上修改:
第一步:创建四个继承Fragment的类Home_Fragment,Time_Fragment,Message_Fragment,Setting_Fragment
package com.example.viewpage_fragment;
import com.example.viewpage_test.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Home_Fragement extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//这里可以写控制界面的逻辑处理的代码
return inflater.inflate(R.layout.page01, null);
}
}
在ManagerFragmentActivity中
更改适配器使用FragmentPagerAdapter适配器
具体如下:
package com.example.viewpage_fragment;
import java.util.ArrayList;
import java.util.List;
import com.example.viewpage_test.MainActivity.InnerPagerAdapter;
import com.example.viewpage_test.R;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
public class ManagerFragmentActivity extends FragmentActivity{
/*
* Viewpage控件
*/
private ViewPager viewpager;
/*
* ViewPage中的Fragment的List集合
*/
private List<Fragment> fragments;
/*
* ViewPage每个child view
*/
private List<View> children;
/**
* Veiwpage的标题
*/
private List<String> titles;
private RadioGroup tab;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewpager = (ViewPager) findViewById(R.id.vp_viewpage);
tab = (RadioGroup) findViewById(R.id.rg_tab);
//viewpage容纳的的界面的集合
children = new ArrayList<View>();
children.add(LayoutInflater.from(this).inflate(R.layout.page01, null));
children.add(getLayoutInflater().inflate(R.layout.page02, null));
children.add(getLayoutInflater().inflate(R.layout.page03, null));
children.add(getLayoutInflater().inflate(R.layout.page04, null));
//每个界面的标题集合
// titles = new ArrayList<String>();
// titles.add("page01");
// titles.add("page02");
// titles.add("page03");
// titles.add("page04");
//fragments的
fragments = new ArrayList<Fragment>();
fragments.add(new Home_Fragement());
fragments.add(new Time_Fragement());
fragments.add(new Message_Fragement());
fragments.add(new Setting_Fragement());
//第一步添加适配器,使用pageAdapter管理子级View对象
viewpager.setAdapter(new InnerFragmentPagerAdapter(getSupportFragmentManager()));
//第二步为tab添加监听器,监听点击事件,得到点击是哪个按钮,根据按钮位置索引,设置viewpage当前要显示的是哪个页面
tab.setOnCheckedChangeListener(new InnerOnCheckedChangeListener());
//为ViewPage添加监听器,监听,当viewpage滑动时页面切换选中的是哪个界面,得到这个界面的位置索引,根据这个位置设置tab按钮的选择状态
viewpager.setOnPageChangeListener(new InnerOnPageChangeListener());
}
private class InnerOnPageChangeListener implements OnPageChangeListener{
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
// 当这个页面滚动是
}
@Override
public void onPageSelected(int position) {
// 当已经选中这个界面时监听事件
switch (position) {
case 0:
tab.check(R.id.btn_Home);
break;
case 1:
tab.check(R.id.btn_Time);
break;
case 2:
tab.check(R.id.btn_Message);
break;
case 3:
tab.check(R.id.btn_Settings);
break;
default:
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
//滚动的状态发生改变时
}
}
private class InnerOnCheckedChangeListener implements OnCheckedChangeListener{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
switch (checkedId) {
case R.id.btn_Home:
viewpager.setCurrentItem(0);//设置当前显示的的界面是哪一个
break;
case R.id.btn_Time:
viewpager.setCurrentItem(1);
break;
case R.id.btn_Message:
viewpager.setCurrentItem(2);
break;
case R.id.btn_Settings:
viewpager.setCurrentItem(3);
break;
default:
break;
}
}
}
public class InnerFragmentPagerAdapter extends FragmentPagerAdapter{
public InnerFragmentPagerAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int position) {
// TODO Auto-generated method stub
return fragments.get(position);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return fragments.size();
}
}
}