getFragmentManager()在Kotlin中不起作用

时间:2017-06-22 18:31:36

标签: android kotlin

我试图在我的项目中本地启动一个包含在库模块中的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)

2 个答案:

答案 0 :(得分:3)

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

private lateinit var searchDialogFragment: SearchDialogFragment

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

{{1}}

答案 1 :(得分:0)

只需用以下代码替换:

searchDialogFragment.show(fragmentManager!!.beginTransaction(), null)

确定是否已经导入:import androidx.fragment.app.Fragment