使用 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()

show(getFragmentManager(),String)给出错误[重复]

getFragmentManager() 无法在自定义对话框上解决