Fragment与ListFragment中的ListView

时间:2015-04-12 01:22:04

标签: android android-fragments android-viewpager android-listfragment

我正在尝试使用ViewPager在我拥有的几个片段之间实现滑动系统。我有2个片段和1个listfragment。我将如何使用这两种类型的片段填充viewpager?或者在片段中实现ListView会更容易,因此我有3个片段吗?

对不起,我不够清楚。我有3个片段:2个课程延伸' Fragment'而第三个扩展了ListFragment'。在我的ViewPagerActivity中,当我将片段添加到列表时:

public class PageViewActivity extends FragmentActivity {
MyPageAdapter pageAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    List<Fragment> fragments = getFragments();

    pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);

    ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
    pager.setAdapter(pageAdapter);

}

private List<Fragment> getFragments(){
    List<Fragment> fList = new ArrayList<Fragment>();

    fList.add(MainActivity.newInstance());
    //fList.add(MainActivity.newInstance("Fragment 1"));
    //fList.add(MyFragment.newInstance("Fragment 2"));
    //fList.add(MyFragment.newInstance("Fragment 3"));

    return fList;
}

}

我收到错误:

fList.add(MainActivity.newInstance());

这是我的ListFragment类(我知道MainActivity会抛出它,但它是我的ListFragment类)。我的listfragment类:

public class MainActivity extends ListFragment {

private List<ListViewItem> mItems;

public static MainActivity newInstance()
{
    MainActivity f = new MainActivity();
    Bundle bdl = new Bundle(1);
    f.setArguments(bdl);
    return f;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main);
    mItems = new ArrayList<ListViewItem>();
    Resources resources = getResources();
    setListAdapter(new ListViewAdapter(getActivity(), mItems));

}


@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    // remove the dividers from the ListView of the ListFragment
    getListView().setDivider(null);
}

}

基本上,它给了我一个错误,因为我传递的是ListFragment的newInstance,但List类型是Fragments。我不认为应该有问题,因为ListFragment是Fragment的子类。

错误:列表中的add(android.support.v4.app.Fragment)无法应用于/ MainActivity

这就是为什么我不确定是否应该使用片段+列表视图来克服此错误。

2 个答案:

答案 0 :(得分:0)

ViewPager实际上并不关心片段的类型,只要片段扩展Fragment,偶数寻呼适配器也不会,ListFragment当然。

答案 1 :(得分:0)

也许您的片段来自支持库,但ViewPager期待标准片段