在操作栏中显示listfragment

时间:2013-01-03 00:32:56

标签: java android eclipse

我正在开发我的第一个Android应用程序,请原谅我,如果这是一个简单的问题。该应用程序目前有五个选项卡(使用片段制作),我目前正在尝试在第一个选项卡中设置ListFragment。

在我的MainActivity类中,我有代码:

public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    if (tab.getPosition() == 0) {
        TopRatedListFragment topRatedListFragment = new TopRatedListFragment();
        getSupportFragmentManager().beginTransaction().replace(R.id.container, topRatedListFragment).commit();
    } else {
        Fragment fragment = new DummySectionFragment();
        Bundle args = new Bundle();
        args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, tab.getPosition() + 1);
        fragment.setArguments(args);
        getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).commit();
    }

现在这适用于我的“DummySectionFragment”。但是我的TopRatedListFragment扩展了ListFragment而不仅仅是Fragment ...因此上面的代码给了我一些问题。

该行:

getSupportFragmentManager().beginTransaction().replace(R.id.container, topRatedListFragment).commit();

是绘制错误的人,并说.replace方法不喜欢topRatedListedFragment参数,因为它是ListFragment而不是常规片段。

我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

最有可能的是,你的导入和/或类定义搞砸了。

FragmentListFragmentFragmentTransaction有两种实现方式。一套在android.app。另一组在android.support.v4.app。这些不兼容。如果您使用FragmentActivity作为Android支持包的片段后端,则使用后一对。

我的猜测是,您的FragmentTransactionListFragment来自不同的套餐,一个来自android.app,一个来自android.support.v4.app。如果是这样,您需要解决这个问题,两者都使用相同的包,适合您的情况。