现在的位置: 首页 > 综合 > 正文

Fragment与Viewpager及FragmentPagerAdapter

2018年02月08日 ⁄ 综合 ⁄ 共 2801字 ⁄ 字号 评论关闭

上一篇我们提到PagerAdapter,但是PagerAdapter比较繁琐,我们可以使用另外一个适配器FragmentPagerAdapter,这个适配器更多时候用于少量界面的ViewPager,比如Tab。它的特定是划过的界面会保存早内存中,尽管已经划过,也是这样。

MainActivity.java代码:

public class MainActivity extends FragmentActivity {
	private ViewPager viewPager;
	private MyAdapter adapter;
	// 显示数据
	// static final int NUM_ITEMS = 10;
	private FragmentManager manager;
	private List<Fragment> list = null;

	// private FragmentTransaction transaction;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		viewPager = (ViewPager) this.findViewById(R.id.viewPager);
		manager = getSupportFragmentManager();
		list = new ArrayList<Fragment>();
		list.add(new Fragment1());
		list.add(new Fragment2());
		list.add(new Fragment3());
		// transaction = manager.beginTransaction();
		adapter = new MyAdapter(manager);
		viewPager.setAdapter(adapter);
		adapter.notifyDataSetChanged();
	}

	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 list.get(position);
		}

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return list.size();
		}

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

Fragment1.java代码:

public class Fragment1 extends Fragment {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		View view = inflater.inflate(R.layout.f1, null);
		return view;
	}

	@Override
	public void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
	}

}

Fragment2.java和Fragment3.java代码类似,就不多说了。

activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </android.support.v4.view.ViewPager>

</RelativeLayout>

f1.xml:

<?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:orientation="vertical" >

    <RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

f2.xml和f3.xml代码类似!

抱歉!评论已关闭.