【问题标题】:Android getItem in FragmentPagerAdapter unable to return FragmentActivityFragmentPagerAdapter中的Android getItem无法返回FragmentActivity
【发布时间】:2014-04-04 05:04:50
【问题描述】:
我正在尝试从 FragmentPagerAdapter 中的 getItem(int index) 返回 FragmentActivity。我正在使用 FragmentActivity 在选项卡中实现列表视图。有什么解决办法吗?
@Override
public android.support.v4.app.Fragment getItem(int index) {
switch (index) {
case 0:
// Top Rated fragment activity
return new TopRatedFragment();
case 1:
// Games fragment activity
return null; //new GamesFragment();
case 2:
// Movies fragment activity
return null;//new MoviesFragment();
}
return null;
}
【问题讨论】:
标签:
android
android-fragments
【解决方案1】:
根据关于开发人员的 getitem() mth 文档,无法恢复 FragmentActivity。
abstract Fragment getItem(int position)
Return the Fragment associated with a specified position.
【解决方案2】:
FragmentPagerAdapter 的 getItem() 方法不会也不能返回 FragmentActivity。 FragmentPagerAdapter在生活中的主要目的是管理ViewPager中的各个页面。要在 ViewPager 选项卡中显示 ListView,您可以扩展 FragmentPagerAdapter,如下所示:
public class MyCustomAdapter extends FragmentPagerAdapter {
private ArrayList<String> mPages;
public MyCustomAdapter(FragmentManager fm, ArrayList<String> viewPagerPageItems) {
super(fm);
mPages = viewPagerPageItems;
}
@Override
public int getCount() {
return mPages.size();
}
@Override
public Fragment getItem(int viewPagerTabPosition) {
switch (viewPagerTabPosition) {
case 0:
// this fragment should extend ListFragment, where you could call
// getListView() in the onCreate() or onActivityCreated() method.
// to inflate your list
return TopRatedListFragment.newInstance(mPages.get(position));
case 1:
case 2:
break;
}
return fragment;
}
}
ListFragment 结构和 newInstance() 工厂方法遵循here 描述的方法。