【发布时间】:2020-09-23 12:05:54
【问题描述】:
我遇到了一个与 Activity 的 getFragmentManager() 与 androidx.FragmentManager 不一致的问题。
所以我有以下方法:
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 来自androidx.fragment.app 包,而Activity 的getFragmentManager() 从android.app 包返回FragmentManager。
我看到 2 个选项可以解决这个问题。
- 更改
DialogFragment的依赖关系,并使用android.app中的依赖关系 - 更改
myMethod()签名以接收AppCompatActivity(来自androidx)而不是Activity并调用getSupportedFragmentManager()。
第一个解决方案不好,因为我想在任何可能的地方继续使用 androidx 类。其次,尽管 AppCompatAcivitity 是一种最佳实践,但它也有缺点。
问题是:有没有办法继续使用 androidx 依赖并在 myMethod() 中包含 Activity 类型参数?
【问题讨论】:
标签: android android-activity androidx appcompatactivity android-fragment-manager