getFragmentManager()在Kotlin中不起作用

Ada*_*itz 5 android kotlin

我试图在我的项目中本地启动一个包含在库模块中的DialogFragment。我从中调用的类正在使用Kotlin,并且在函数getFragmentManager()上出现以下错误:下列任何函数均不能使用提供的参数进行调用

  import com.github.adamshurwitz.materialsearchtoolbar.SearchDialogFragment
    ...

    private var searchDialogFragment: SearchDialogFragment? = null
    ...

    searchDialogFragment = SearchDialogFragment()
    searchDialogFragment.show(supportFragmentManager, null)
Run Code Online (Sandbox Code Playgroud)

我在另一个项目中用Java调用它,并且使用getSupportFragmentManager()可以正常工作。

我尝试过的解决方案:

searchDialogFragment.show(getFragmentManager(), null)
searchDialogFragment.show(supportFragmentManager, null)
searchDialogFragment.show(supportFragmentManager as FragmentManager, null)
searchDialogFragment.show(supportFragmentManager.beginTransaction(), null)
searchDialogFragment.show(supportFragmentManager(), null)
Run Code Online (Sandbox Code Playgroud)

Jak*_*ich 3

由于您的searchDialogFragment变量在声明中被标记为可为空并带有问号,因此您需要使用安全调用运算符?.。它仅在 is 不为 null 时执行searchDialogFragment

searchDialogFragment?.show(supportFragmentManager, null)
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用以下命令将变量声明为非空,但仍可以稍后在代码中对其进行初始化:

private lateinit var searchDialogFragment: SearchDialogFragment
Run Code Online (Sandbox Code Playgroud)