android为我们提供了一个十分方便的类FragmentPagerAdapter,以便于在一个应用中对页面进行切换。
在对该类进行应用时,我们首先来认识一下几个方法:
getItem(int position)
:该方法的作用是实例化某个页面类对象
getCount():
返回当前实例化的个数
接下来我们来用这个类做一个小小的应用,代码如下:
package com.example.fragmentpagertest;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int position) {
// TODO Auto-generated method stub
return ArrayListFragment.newInstance(position);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 3;
}
}
我的fragment页面,代码如下:
package com.example.fragmentpagertest;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
public class ArrayListFragment extends Fragment{
static ArrayListFragment newInstance(int layoutId){
ArrayListFragment f=new ArrayListFragment();
Bundle b=new Bundle();
b.putInt("num", layoutId);
f.setArguments(b);
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.fragment_01, container, false);
}
/*此处若要用必须要继承ListFragment,不然会报错,别问我为什么,我也不知道*/
/*@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, 0));
}*/
}
接下来就是xml了:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:background="#FF0000"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="改变文本为Hello Viewpager"
/>
<TextView
android:id="@+id/tv1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="第一个fragment"
/>
</LinearLayout>
第二个:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:padding="4dip"
android:gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1">
</android.support.v4.view.ViewPager>
</LinearLayout>
主程序代码
public class MainActivity extends ActionBarActivity {
private ViewPager m_vp;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
m_vp=(ViewPager)findViewById(R.id.pager);
adapter=new MyAdapter(getSupportFragmentManager());
m_vp.setAdapter(adapter);
}
}
好了,快点去试一下吧