问题描述
我遇到了与Activity与Androidx.FragmentManager的getFragmentManager()合并相关的问题。
public void myMethod(Activity activity) {
/**
* do some staff here
*/
//Now we should open a DialogFragment
new MyCustomDialogFragment().show((activity).getFragmentManager(),MyCustomDialogFragment.TAG);
}
在这里出现错误"Can not resolve method show(android.app.FragmentManager,java.lang.String)
。
所有这些都是因为当DialogFragment
的{{1}}从androidx.fragment.app
包返回Activity
时,我的getFragmentManager()
来自FragmentManager
包。
我看到2种解决方案。
- 更改
android.app
的依赖关系,并使用DialogFragment
中的依赖关系 - 更改
android.app
签名以接收myMethod()
(来自androidx)而不是AppCompatActivity
并调用Activity
。
第一个解决方案不好,因为我想尽可能地使用androidx类。其次,尽管AppCompatAcivitity是最佳做法,但它也有缺点。
问题是:是否有一种方法可以继续使用androidx依赖项,并在getSupportedFragmentManager()
中包含Activity
类型参数?
解决方法
您应该使用FragmentActivity
(来自androidx)而不是Activity
作为myMethod()
中的参数类型,并调用getSupportFragmentManager()
以获取FragmentManager
。这应该可以解决您的问题。