使用 getFragmentManager().beginTransaction() 在 Android 中为 FragmentTransaction 键入不匹配
Posted
技术标签:
【中文标题】使用 getFragmentManager().beginTransaction() 在 Android 中为 FragmentTransaction 键入不匹配【英文标题】:Type mismatch in Android for FragmentTransaction with getFragmentManager().beginTransaction() 【发布时间】:2013-11-21 19:20:39 【问题描述】:当我尝试通过在活动中声明 FragmentTransaction ft = getFragmentManager().beginTransaction() 来替换片段时,我总是有以下错误警报:
import android.support.v4.app.FragmentTransaction;
public class MainFrameActivity extends ActivitySupport
FragmentTransaction ft = getFragmentManager().beginTransaction();
switch (position)
case 0:
ft.replace(R.id.content_frame, fragmentDiscover);
break;
case 1:
ft.replace(R.id.content_frame, fragmentPersonInfo);
break;
ft.commit();
mDrawerList.setItemChecked(position, true);
mDrawerLayout.closeDrawer(mDrawerList);
并且该类是 ActivitySupport 继承自:
public class ActivitySupport extends Activity implements IActivitySupport
我已尝试将 getFragmentManager 更改为 getSupportFragmentManager(),但警告该方法未定义,情况变得更糟。
那么我该怎么做才能使 getFragmentManager() 成为 v4 支持的方法?
【问题讨论】:
检查您是否导入了正确的 FragmentTransaction 类(即支持 lib 与核心操作系统)。这真的是我唯一能看到的问题。 我不确定,但它应该有类似getSupportFragmentManager()
..的方法。
那个也是。我面前没有文档,所以提问者必须检查。
你需要为ActivitySupport类扩展FragmentActivity
谢谢你们! Ankit 解决了问题!
【参考方案1】:
改变它
public class ActivitySupport extends Activity implements IActivitySupport
致
public class ActivitySupport extends FragmentActivity implements IActivitySupport
然后就可以了
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
【讨论】:
谢谢你,Amit,你的回答对我来说非常好,这是有效的。【参考方案2】:首先扩展 FragmentActivity
并确保您使用的是支持库中的那个。
尝试使用getSupportFragmentManager().beginTransaction()
而不是getFragmentManager().beginTransaction()
。
问题是您从 v4 支持库中导入了 FragmentTransaction,而您没有使用 v4 支持库中的片段管理器。
Here是进一步参考的链接。
希望这会有所帮助:)
【讨论】:
感谢 Ankit,感谢您的大力支持和提示,它确实有效。以上是关于使用 getFragmentManager().beginTransaction() 在 Android 中为 FragmentTransaction 键入不匹配的主要内容,如果未能解决你的问题,请参考以下文章
Android 同时使用 getFragmentManager 和 getSupportFragmentManager 会导致重叠
使用 getFragmentManager().beginTransaction() 在 Android 中为 FragmentTransaction 键入不匹配
为啥 getFragmentManager 会导致 Incompatible Type 错误? [关闭]
Android 兼容包不包含 Activity.getFragmentManager()