FragmentPagerAdapter会将所有的页面全部加载进来,这与PagerAdapter不一样,PagerAdapter只是加载3个(3个为一组进行加载),当ViewPager装载的Fragment比较少的时候可以用到FragmentPagerAdapter。
1、四个Fragment加载的xml
view1.xml view2.xml view3.xml view4.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" >
<TextView
android:text="第一个界面"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
2、Fragment1.java
package com.huangyi.fragmentpageradapter;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment1 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.view1, container, false);
}
}
Fragment2.java
package com.huangyi.fragmentpageradapter;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment2 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.view2, container, false);
}
}
Fragment3.java
package com.huangyi.fragmentpageradapter;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment3 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.view3, container, false);
}
}
Fragment4.java
这里面加入了一个销毁的方法onDestroy
package com.huangyi.fragmentpageradapter;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment4 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.view4, container, false);
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i("Main", "我销毁了");
}
}
3、定义ViewPager的xml文件 main_activity.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"
tools:context="com.huangyi.fragmentpageradapter.MainActivity" >
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" >
</android.support.v4.view.ViewPager>
</RelativeLayout>
4、MyFragmentPagerAdapter.java
继承于FragmentPagerAdapter,我这里导入的是android.support.v4.app.Fragment。
package com.huangyi.fragmentpageradapter;
import java.util.List;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;
public class MyFragmentPagerAdapter extends FragmentPagerAdapter{
private List<Fragment> fragList;
private List<String> titleList;//标题
public MyFragmentPagerAdapter(FragmentManager fm,List<Fragment> fragList,List<String> titleList) {
super(fm);
this.fragList=fragList;
this.titleList=titleList;
}
@Override
public Fragment getItem(int position) {
return fragList.get(position);
}
@Override
public int getCount() {
return fragList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return titleList.get(position);
}
}
5、MainActivity.java
如果需要使用到getSupportFragmentManager(),则MainActivity必须继承于FragmentActivity
package com.huangyi.fragmentpageradapter;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
public class MainActivity extends FragmentActivity {
private ViewPager pager;
private List<Fragment> fragList;
private List<String> titleList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager=(ViewPager) findViewById(R.id.pager);
/**
*通过Fragment作为ViewPager的数据源
*/
fragList=new ArrayList<Fragment>();
fragList.add(new Fragment1());
fragList.add(new Fragment2());
fragList.add(new Fragment3());
fragList.add(new Fragment4());
MyFragmentPagerAdapter adapter=new MyFragmentPagerAdapter(getSupportFragmentManager(), fragList, titleList);
pager.setAdapter(adapter);
}
}
只有当ViewPager滑动到第三个标签之后(滑动到第三个标签之后再次滑动到第一或者第二个标签也行)退出app才会调用销毁方法。
代码下载地址:http://download.csdn.net/detail/yihuangol/9251739