首先新建一个ViewPageActivity类继承FragmentActivity(android.support.v4.app.FragmentActivity而不是android.app.FragmentActivity)
import android.content.Context; 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.app.ListFragment; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import com.ryan.test.R; public class ViewPageActivity extends FragmentActivity { private static String[] mStrings = { "tab1", "tab2", "tab3", "tab4" }; static final int NUM_ITEMS = 4; private static final String TAG = ViewPageActivity.class.getName(); private SectionsPagerAdapter pagerAdapter; private ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.viewpage_act); pagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); viewPager = (ViewPager) findViewById(R.id.view_pager); viewPager.setAdapter(pagerAdapter); Button button1 = (Button) findViewById(R.id.goto_one); button1.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { viewPager.setCurrentItem(0); } }); Button button2 = (Button) findViewById(R.id.goto_two); button2.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { viewPager.setCurrentItem(1); } }); Button button3 = (Button) findViewById(R.id.goto_three); button3.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { viewPager.setCurrentItem(2); } }); Button button4 = (Button) findViewById(R.id.goto_four); button4.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { viewPager.setCurrentItem(3); } }); } @Override public View onCreateView(String name, Context context, AttributeSet attrs) { return super.onCreateView(name, context, attrs); } public static class SectionsPagerAdapter extends FragmentPagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return ArrayListFragment.newInstance(position); } @Override public int getCount() { return NUM_ITEMS; } } public static class ArrayListFragment extends ListFragment { int mNum; static ArrayListFragment newInstance(int num) { ArrayListFragment f = new ArrayListFragment(); Bundle args = new Bundle(); args.putInt("num", num); f.setArguments(args); return f; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i(TAG, "Fragment" + mNum + ":onCreate"); mNum = getArguments() != null ? getArguments().getInt("num") : 1; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.i(TAG, "Fragment"+mNum+":onCreateView"); View v = inflater.inflate(R.layout.fragment_pager_list, container, false); View tv = v.findViewById(R.id.fpl_text); ((TextView) tv).setText("Fragment #" + mNum); return v; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.i(TAG, "Fragment"+mNum+":onActivityCreated"); setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, mStrings)); } @Override public void onListItemClick(ListView l, View v, int position, long id) { Log.i(TAG, "Item clicked:" + id); } } }
对应的Layout文件viewpage_actxml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" android:padding="4dip" > <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" > </android.support.v4.view.ViewPager> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:gravity="center" android:measureWithLargestChild="true" android:orientation="horizontal" > <Button android:id="@+id/goto_one" android:layout_width="0px" android:layout_weight="1" android:layout_height="wrap_content" android:text="First" /> <Button android:id="@+id/goto_two" android:layout_width="0px" android:layout_weight="1" android:layout_height="wrap_content" android:text="Second" /> <Button android:id="@+id/goto_three" android:layout_width="0px" android:layout_weight="1" android:layout_height="wrap_content" android:text="Third" /> <Button android:id="@+id/goto_four" android:layout_width="0px" android:layout_weight="1" android:layout_height="wrap_content" android:text="Forth" /> </LinearLayout> </LinearLayout>
每个单独的ListFragment对应的Layout文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:drawable/gallery_thumb" android:orientation="vertical" > <TextView android:id="@+id/fpl_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical|center_horizontal" android:text="@string/hello_world" android:textAppearance="?android:attr/textAppearanceMedium" /> <FrameLayout android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" > <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:drawSelectorOnTop="false" /> <!-- Here is the view to show if the list is emtpy --> <TextView android:id="@android:id/empty" android:layout_width="match_parent" android:layout_height="match_parent" android:text="No items." android:textAppearance="?android:attr/textAppearanceMedium" /> </FrameLayout> </LinearLayout>