Android - MyViewPagerActivity.java
1 package com.example.droid; 2 3 import java.util.ArrayList; 4 5 import com.example.droid.util.MyFragment; 6 7 import android.os.Bundle; 8 import android.app.Activity; 9 import android.app.FragmentTransaction; 10 import android.support.v4.app.Fragment; 11 import android.support.v4.app.FragmentActivity; 12 import android.support.v4.app.FragmentManager; 13 import android.support.v4.app.FragmentPagerAdapter; 14 import android.support.v4.view.ViewPager; 15 import android.support.v4.view.ViewPager.OnPageChangeListener; 16 import android.util.Log; 17 import android.view.Menu; 18 import android.widget.RadioButton; 19 import android.widget.RadioGroup; 20 import android.widget.RadioGroup.OnCheckedChangeListener; 21 22 public class MyViewPagerActivity extends FragmentActivity { 23 private ViewPager viewPager; 24 private MyAdapter adapter; 25 private Fragment fragment_1; 26 private Fragment fragment_2; 27 private RadioGroup radioGroup; 28 29 private OnCheckedChangeListener keyChangeListener = new OnCheckedChangeListener() { 30 @Override 31 public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { 32 Log.i("onChecked", "" + checkedId); 33 int position = 0; 34 switch (checkedId) { 35 case R.id.radio_1: 36 position = 0; 37 break; 38 case R.id.radio_2: 39 position = 1; 40 break; 41 default: 42 break; 43 } 44 viewPager.setCurrentItem(position); 45 } 46 }; 47 48 private OnPageChangeListener pageChangeListener = new OnPageChangeListener() { 49 50 @Override 51 public void onPageSelected(int position) { 52 Log.i("onPageChange", "" + position); 53 int checkedId = R.id.radio_1; 54 switch (position) { 55 case 0: 56 checkedId = R.id.radio_1; 57 break; 58 case 1: 59 checkedId = R.id.radio_2; 60 break; 61 default: 62 break; 63 } 64 radioGroup.check(checkedId); 65 } 66 67 @Override 68 public void onPageScrolled(int arg0, float arg1, int arg2) { 69 70 } 71 72 @Override 73 public void onPageScrollStateChanged(int position) { 74 } 75 }; 76 77 @Override 78 protected void onCreate(Bundle savedInstanceState) { 79 super.onCreate(savedInstanceState); 80 setContentView(R.layout.activity_my_view_pager); 81 init(); 82 } 83 84 private void init () { 85 viewPager = (ViewPager) findViewById(R.id.viewPager); 86 radioGroup = (RadioGroup) findViewById(R.id.radioGroup); 87 fragment_1 = new MyFragment(); 88 fragment_2 = new MyFragment(); 89 adapter = new MyAdapter(getSupportFragmentManager()); 90 adapter.addFragment(fragment_1); 91 adapter.addFragment(fragment_2); 92 viewPager.setAdapter(adapter); 93 radioGroup.setOnCheckedChangeListener(keyChangeListener); 94 viewPager.setOnPageChangeListener(pageChangeListener); 95 } 96 97 @Override 98 public boolean onCreateOptionsMenu(Menu menu) { 99 // Inflate the menu; this adds items to the action bar if it is present. 100 getMenuInflater().inflate(R.menu.my_view_pager, menu); 101 return true; 102 } 103 104 105 static class MyAdapter extends FragmentPagerAdapter { 106 ArrayList<Fragment> fragmentList; 107 108 public MyAdapter(FragmentManager fm) { 109 super(fm); 110 fragmentList = new ArrayList<Fragment>(); 111 // TODO Auto-generated constructor stub 112 } 113 114 public void addFragment (Fragment fragment) { 115 if (!fragmentList.contains(fragment)) { 116 fragmentList.add(fragment); 117 } 118 } 119 120 @Override 121 public Fragment getItem(int position) { 122 return fragmentList == null ? null : fragmentList.get(position); 123 } 124 125 @Override 126 public int getCount() { 127 return fragmentList == null ? 0 : fragmentList.size(); 128 } 129 130 } 131 }
activity_my_view_pager.xml
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingBottom="@dimen/activity_vertical_margin" 6 android:paddingLeft="@dimen/activity_horizontal_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingTop="@dimen/activity_vertical_margin" 9 tools:context=".MyViewPagerActivity" > 10 11 <RadioGroup 12 android:id="@+id/radioGroup" 13 android:orientation="horizontal" 14 android:layout_width="match_parent" 15 android:layout_height="wrap_content" > 16 17 <RadioButton android:id="@+id/radio_1" 18 android:checked="true" 19 android:button="@null" 20 android:background="@drawable/selector_fragment_1" 21 android:layout_width="wrap_content"/> 22 <RadioButton android:id="@+id/radio_2" 23 android:button="@null" 24 android:background="@drawable/selector_fragment_2" 25 android:layout_width="wrap_content"/> 26 </RadioGroup> 27 <android.support.v4.view.ViewPager 28 android:id="@+id/viewPager" 29 android:layout_width="match_parent" 30 android:layout_height="match_parent" 31 android:layout_below="@id/radioGroup" /> 32 33 </RelativeLayout>
res/drawable/selector_fragment_1.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <selector xmlns:android="http://schemas.android.com/apk/res/android" > 3 <item android:drawable="@drawable/icon_4_n" 4 android:state_checked="false" /> 5 <item android:drawable="@drawable/icon_4_d" 6 android:state_checked="true" /> 7 </selector>