26

输入这样的代码:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

出现此错误“android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();” 并将其作为快速修复,实际上可以消除错误:

android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

我在扩展 FragmentActivity 的主要活动中输入这个。有人知道为什么吗?我已经包括:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

编辑

 DescriptionFragment fragment = new DescriptionFragment();
            android.support.v4.app.FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            ft.replace(R.id.pager, fragment);
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            ft.commit();

将 getSupportFragmentManager() 更改为 getFragmentManager() 需要我将 DescriptionFragment 更改为 android.app.Fragment ...有什么想法吗?

4

6 回答 6

37

使用 getSupportFragmentManager() 您将获得 supportLibrary fragmentManager 而不是系统 fragmentManager。因此,您正在处理支持库的事务。

这就是您需要添加所有这些导入并使用 android.support.v4.app 的原因。

如果您想获取系统 fragmentManager,只需尝试使用 getFragmentManager() 而不是 getSupportFragmentManager()。

希望这可以帮助

于 2013-07-01T06:50:33.640 回答
3

尝试这个

公共类 DescriptionFragment 扩展了 android.support.v4.app.Fragment

而不是简单的片段。

于 2013-11-14T04:45:33.833 回答
2

您是否将 android.support.v4.jar 文件导入您的项目?

于 2013-07-01T06:58:59.890 回答
2

好的......只需为片段创建一个方法并调用它就像:

void addfragment(Fragment fragment, boolean addBacktoStack, int transition) {
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.simple_fragment, fragment);
    ft.setTransition(transition);
    if (addBacktoStack)
        ft.addToBackStack(null);
    ft.commit();

}

现在只需调用您的片段:

addfragment(new DescriptionFragment(this),true, FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
于 2013-07-01T07:16:19.963 回答
1

getActivity() 解决我的问题android.app.FragmentManager fragmentManager = getActivity().getFragmentManager();

于 2017-07-19T13:16:41.473 回答
1

在 Activity 中导入 android.app.Fragment .. 在 Fragment 中使用 android.app.Fragment 扩展 .. 这解决了我的问题...

于 2017-12-23T04:44:06.343 回答