ViewPager+Fragment的结合使用

来源:互联网 发布:淘宝网店出售评估 编辑:程序博客网 时间:2024/05/21 10:17
  • 布局文件
 <RadioGroup        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal"        android:layout_weight="1">        <RadioButton            android:id="@+id/but1_main"            android:button="@null"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:textSize="40dp"            android:text="页面一"/>        <RadioButton            android:id="@+id/but2_main"            android:button="@null"            android:layout_weight="1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="40dp"            android:text="页面二"/>        <RadioButton            android:id="@+id/but3_main"            android:button="@null"            android:layout_weight="1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="40dp"            android:text="页面三"/>        <RadioButton        android:id="@+id/but4_main"        android:button="@null"            android:layout_weight="1"            android:textSize="40dp"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="页面四"/>    </RadioGroup>    <android.support.v4.view.ViewPager        android:id="@+id/vp_main"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_weight="10">    </android.support.v4.view.ViewPager>
  • 主方法:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{    private RadioGroup group;    private RadioButton but1;    private RadioButton but2;    private ViewPager vp;    private ArrayList<RadioButton> butlist;    private RadioButton but3;    private RadioButton but4;    private ImageView image;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        but1= (RadioButton) findViewById(R.id.but1_main);        but2= (RadioButton) findViewById(R.id.but2_main);        but3 = (RadioButton) findViewById(R.id.but3_main);        but4 = (RadioButton) findViewById(R.id.but4_main);        butlist = new ArrayList<>();        butlist.add(but1);        butlist.add(but2);        butlist.add(but3);        butlist.add(but4);        //遍历所有的按钮,都设置点击监听事件        for (Button b: butlist) {            b.setOnClickListener(this);        }        vp = (ViewPager) findViewById(R.id.vp_main);        //因为myfragmentadapter需要一个fragmentmanager,所以创建出来传过去。        FragmentPagerAdapter myFragmentAdapter = new FragmentAdapter(getSupportFragmentManager());//给一个管理者        vp.setAdapter(myFragmentAdapter);        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            public void onPageSelected(int arg0) {                //循环遍历所有的button                //如果当前索引值和某一个but集合中的索引值一致,就讲该but颜色设置红色,其余的为黑色                for (int i = 0; i < butlist.size(); i++) {                    if (i==arg0) {                        butlist.get(i).setTextColor(Color.RED);                    }else {                        butlist.get(i).setTextColor(Color.BLACK);                    }                }            }            public void onPageScrolled(int arg0, float arg1, int arg2) {            }            public void onPageScrollStateChanged(int arg0) {            }        });    }    @Override    public void onClick(View v) {        switch (v.getId()) {            //根据点钟but的索引值ID来判断哪一个but被点击,设置当前所在的页面。            case R.id.but1_main:                vp.setCurrentItem(0);                break;            case R.id.but2_main:                vp.setCurrentItem(1);                break;            case R.id.but3_main:                vp.setCurrentItem(2);                break;            case R.id.but4_main:                vp.setCurrentItem(3);                break;            default:                break;        }    }}

适配器:

public class FragmentAdapter extends FragmentPagerAdapter {    public FragmentAdapter(FragmentManager fm) {        super(fm);        // TODO Auto-generated constructor stub    }    @Override    public Fragment getItem(int position) {        Fragment fragment=null;        switch (position) {            case 0:                fragment=new Fragment1();                break;            case 1:                fragment=new Fragment2();                break;            case 2:                fragment=new Fragment3();                break;            case 3:                fragment=new Fragment4();                break;            default:                break;        }        return fragment;    }    //界面    @Override    public int getCount() {        return 4;    }}
  • fragment类:
public class Fragment1 extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        return inflater.inflate(R.layout.f1,null);    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);    }}

就是这样,ok.