FragmentTransaction替换不起作用

时间:2015-10-14 14:21:36

标签: java android fragment

我不会替换我的片段,但我有一个问题, 在replace Android Studio没有给我错误后拨打beginTransaction()时。

FragmentManager fragmentManager = getFragmentManager();   
FragmentTransaction fragmentTransaction = fragmentManager 
        .beginTransaction().replace(R.id.l, fragment);   

然而,当我做这样的事情时:

FragmentManager fragmentManager = getFragmentManager();   
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.l, fragment); 

Android Studio告诉我fragmentTransaction没有这种方法。 当我执行此类操作时,我遇到错误commit()返回int而AS建议将fragmentTransaction转移到int

FragmentManager fragmentManager = getFragmentManager();   
FragmentTransaction fragmentTransaction = fragmentManager 
            .beginTransaction().replace(R.id.l, fragment).commit();   

4 个答案:

答案 0 :(得分:1)

FragmentManager fragmentManager = getFragmentManager();   
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.l, fragment);  
     

Android Studio告诉我,fragmentTransaction没有这个方法

在上一部分中,;之后您遗漏了beginTransacton()所以请添加它。还要确保你有View R.id.l和片段类型片段bcoz方法定义如下replace(int containerViewId, Fragment fragment)或者你可以使用replace(int containerViewId, Fragment fragment, String tag)
For more info refer doc

来到其他问题

FragmentManager fragmentManager = getFragmentManager();   
FragmentTransaction fragmentTransaction = fragmentManager 
            .beginTransaction().replace(R.id.l, fragment).commit(); 
     

当我做这样的事情时,我遇到了commit()返回的错误   int和AS建议将fragmentTransaction传递给int

commit是FragmentTransaction的方法,返回类型是int 你可以引用它 signature here 所以你可以做到

int commitValue = = fragmentManager 
                 .beginTransaction().replace(R.id.l, fragment).commit();

同时确保Fragment和FragmentManager都属于同一个软件包,来自android.app。*或者都来自android.support.v4.app。*即支持库

答案 1 :(得分:0)

尝试

n

答案 2 :(得分:0)

在前两个片段中,您缺少事务中的commit(),因此不会替换任何内容。

最后一个大多是正确的,只是不要指望该方法返回FragmentTransaction。这应该有效:

FragmentManager fragmentManager = getFragmentManager();   
fragmentManager.beginTransaction().replace(R.id.l, fragment).commit();   

答案 3 :(得分:0)

你只需做:

    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();

    ft.replace(R.id.l, fragment);
    ft.commit();

全部。希望它能帮到你!