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

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

    private var searchDialogFragment: SearchDialogFragment? = null
    ...

    searchDialogFragment = SearchDialogFragment()
    searchDialogFragment.show(supportFragmentManager, null)

我在另一个项目中用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)

最佳答案

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

searchDialogFragment?.show(supportFragmentManager, null)

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

10-08 03:29