本文共 1701 字,大约阅读时间需要 5 分钟。
我已经实现了类似于你拥有的东西 . 我像这样扩展了 FragmentPagerAdapter 类:
public class ContactsFragmentPagerAdapter extends FragmentPagerAdapter {
ActionBar mActionBar;
private List mFragments;
public ContactsFragmentPagerAdapter(FragmentManager fm, List fragments) {
super(fm);
mFragments = fragments;
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
public void setActionBar(ActionBar bar) {
mActionBar = bar;
}
}
注意我已经在构造函数中添加了一个参数来传递 Fragment 的 Fragment 对象 . 这样,此类的 getItem() 方法可以返回任何扩展 Fragment 或其任何子类的类,而不是像您所做的那样只返回一个特定的类 ArrayListFragment .
在 Activity 中,我实例化了我的 FragmentPagerAdapter 的子类,我已经传递了 Fragment 对象的列表:
类实例化FragmentPagerAdapter
public final class ContactManager extends Activity {
private ContactsFragmentPagerAdapter mAdapter;
private ViewPager mPager;
public ActionBar mActionBar;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contact_manager);
List fragments = new Vector();
fragments.add(Fragment.instantiate(this, ContactsListFragment.class.getName()));
fragments.add(Fragment.instantiate(this, GroupsListFragment.class.getName()));
mAdapter = new ContactsFragmentPagerAdapter(this.getFragmentManager(), fragments);
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {}
@Override
public void onPageSelected(int arg0) {
mActionBar.getTabAt(arg0).select();
}
});
}
}
通过访问变量"fragments",您可以访问以前创建的 Fragment ,以便您可以运行该 Fragment 的方法 .
转载地址:http://nbips.baihongyu.com/