【问题标题】:ListView in Fragment vs ListFragment片段中的 ListView 与 ListFragment
【发布时间】:2015-04-12 01:22:04
【问题描述】:

我正在尝试使用 ViewPager 在我拥有的几个片段之间实现滑动系统。我有 2 个片段和 1 个列表片段。我将如何使用这两种类型的片段填充 viewpager?还是在片段中实现 ListView 会更容易,所以我有 3 个片段?

对不起,我不够清楚。我有 3 个片段:2 个类扩展了“片段”,而第三个类扩展了“列表片段”。在我的 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

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

【问题讨论】:

  • 我不明白你的问题。 ListFragment 只是一个 Fragment,带有一些方便的方法来处理 ListView。如果您决定使用具有ListViewFragment 并自己完成所有操作,那么您只是在创建自己的ListFragment 版本。

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


【解决方案1】:

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

【讨论】:

  • 修复了它。在我的 ListFragment 中,我正在导入 android.app.ListFragment,但在我的 ViewPagerActivity 中,我正在导入 android.support.v4.app.Fragment。只是好奇,为什么有两组库?你用哪个有关系吗?这一直让我感到困惑。
【解决方案2】:

ViewPager 实际上并不关心片段的类型,即使是分页适配器也不关心,只要片段扩展 FragmentListFragment 当然会这样做。

【讨论】:

  • 修复了它,但我不确定支持库和标准库有什么区别。
  • @anvesh95 Fragment 作为 API 11 中添加的组件,如果您想让您的应用与之前的 android 版本兼容,您可能需要使用支持库。这不仅仅是关于片段,它们还支持在以下 android 版本中添加的许多功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 2014-04-05
相关资源
最近更新 更多