自从我升级到 gradle 4.2.0 以来,NavDirection 投射问题

时间:2021-05-05 07:56:23

标签: android android-fragments android-navigation

我已将我的项目升级到

classpath 'com.android.tools.build:gradle:4.2.0'

我在 utils 文件中有一个静态方法:

public static void launchFragment(BaseFragment fragment, NavDirections directions) {
    NavHostFragment.findNavController(fragment).navigate(directions);
}

从今天早上开始,如果我正在使用

 ActivityUtils.launchFragment(this, ProfileFragmentDirections.accountAction());

这很好,但如果我用这样的参数调用一个动作

   ActivityUtils.launchFragment(this, MainHostFragmentDirections.webAction(getString(R.string.info_moderation), WebFragment.MODERATION));

我在 IDE 上有错误

Cannot resolve method 'launchFragment(fr.tmly.androidapp.ui.main.activity.MainActivity, fr.tmly.androidapp.ui.main.fragment.MainHostFragmentDirections.@androidx.annotation.NonNull WebAction)'

错误说明

fr.tmly.androidapp.ui.main.fragment.MainHostFragmentDirections.@androidx.annotation.NonNull WebAction

不是 NavDirections 类,但我可以构建编译并运行项目,如果我检查调试器

good type 如您所见,它是 NavDirection 的一个实例

解决此错误的解决方案是添加这样的 (NavDirections) 转换

ActivityUtils.launchFragment(this, (NavDirections) MainHostFragmentDirections.webAction(
                        getString(R.string.info_moderation), WebFragment.MODERATION));

但是我在我的应用程序中到处都使用这种方法,我不想在任何地方添加手动转换,我该怎么办?在 gradle 升级之前我没有这个错误。

0 个答案:

没有答案