无法从活动中调用getSupportFragmentManager()函数

85

我有一个包含片段的活动。

XML:


 <fragment android:name="com.example.androidcalculator.ResultFragment"
            android:id="@+id/result_fragment"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

我想从Activity的一个方法中调用ResultFragment中的一个方法,但是getSupportFragmentManager不存在。

FragmentManager fragMan = getSupportFragmentManager();

我该如何解决这个问题?

11个回答

194

12
FragmentManager现已过时。 - CoolMind
不完全正确,你应该使用AndroidX FragmentManager。 - ueen
3
我在这里使用的是 ComponentActivity 而不是 AppcompactActivity,并且在 ComponentActivity 中使用 getsupportManger() 函数时出现错误。 - Sunil Chaudhary

62

将类扩展到AppCompatActivity而不是Activity


20

从父级获取当前活动,然后使用此代码

getActivity().getSupportFragmentManager()

可以尝试使用以下代码获取 FragmentManager:FragmentManager fragMan = getFragmentManager(); - MrPickles7

4
您需要扩展FragmentActivity而不是Activity

3

简单易用

 FragmentManager fm = getActivity().getSupportFragmentManager();

在访问MainLayout中的片段布局时,请始终使用强制转换或getActivity()


2

导入

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;

22
在这里仅仅导入是不够的,你还需要从FragmentActivity继承。 - Alexander Farber

1

这对我有效。运行Android API 19及以上版本。

FragmentManager fragMan = getFragmentManager();

0
getCurrentActivity().getFragmentManager()

0
((FragmentActivity) activity).getSupportFragmentManager(); 

感谢您对Stack Overflow社区做出贡献的兴趣。这个问题已经有很多答案了,其中一个答案已经得到社区的广泛验证。您确定您的方法之前没有被提到过吗?如果是这样的话,能否解释一下您的方法与之前的方法有何不同,您的方法在什么情况下可能更好,以及为什么您认为之前的答案不够满意。您能否编辑您的答案并提供一个解释呢? - undefined

-1

不是

extends Fragment

使用

extends android.support.v4.app.Fragment 

这对我有效。 适用于*API14及以上版本


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接