0

我正在开发我的第一个 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 而不是常规 Fragment。

我应该如何解决这个问题?

谢谢!

4

1 回答 1

1

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

FragmentListFragment和有两种实现方式FragmentTransaction。一套在android.app. 另一组在android.support.v4.app. 这些不兼容。如果您使用FragmentActivityAndroid 支持包的片段反向移植,则使用后一对。

我的猜测是你FragmentTransaction和你ListFragment来自不同的包,一个android.app来自android.support.v4.app. 如果是这样,您需要解决这个问题,让两者都使用相同的包,无论哪个适合您的情况。

于 2013-01-03T00:35:35.557 回答