我正在开发我的第一个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而不是常规片段。
我该如何解决这个问题?
谢谢!
答案 0 :(得分:1)
最有可能的是,你的导入和/或类定义搞砸了。
Fragment
,ListFragment
和FragmentTransaction
有两种实现方式。一套在android.app
。另一组在android.support.v4.app
。这些不兼容。如果您使用FragmentActivity
作为Android支持包的片段后端,则使用后一对。
我的猜测是,您的FragmentTransaction
和ListFragment
来自不同的套餐,一个来自android.app
,一个来自android.support.v4.app
。如果是这样,您需要解决这个问题,两者都使用相同的包,适合您的情况。