【问题标题】:Android | Kotlin : Return type of 'onCreateDialog' is not a subtype of the return type of the overridden member安卓 | Kotlin:“onCreateDialog”的返回类型不是被覆盖成员的返回类型的子类型
【发布时间】:2020-12-07 04:41:16
【问题描述】:

我被这个错误困住了

“onCreateDialog”的返回类型不是返回类型的子类型 被覆盖的成员 'protected/protected and package/ open fun onCreateDialog(p0: Int): 对话!定义在 androidx.appcompat.app.AppCompatActivity'

我刚刚将我的项目从 java 迁移到 kotlin,现在我遇到了这种错误,这对我来说是新的,所以非常感谢任何帮助。

代码:

override fun onCreateDialog(id: Int): () -> ProgressDialog? {
        return when (id) {
            progress_bar_type -> ({
                pDialog = ProgressDialog(this)
                pDialog!!.setMessage("Sending Application. Please wait...")
                pDialog!!.isIndeterminate = false
                pDialog!!.max = 100
                pDialog!!.setProgressStyle(ProgressDialog.STYLE_SPINNER)
                pDialog!!.setCancelable(true)
                pDialog!!.show()
                pDialog
            })!!
            else -> null
        }
    }

【问题讨论】:

  • 你能发布整个课程吗?看不出你为什么要覆盖onCreateDialog :)
  • 它定义为 fun onCreateDialog(id: Int): Dialog 只是删除它与建议开头的方法类型。我猜onCreateDialog 也被弃用了。

标签: android kotlin


【解决方案1】:

onCreateDialog 已弃用。对您来说最好的解决方案是创建一个扩展 DialogFragment 的新类(如 MyProgressDialog : DialogFragment

然后在MyProgressDialog 中,简单地覆盖onCreateDialog

override fun onCreateDialog(savedInstanceState: Bundle): Dialog {
    val dialog = ProgressDialog(getActivity())
    // setup whatever you need
    dialog.setTitle(R.string.title_dialog);

    return dialog;
}

然后你只需创建一个实例并调用show

MyProgressDialog().show(supportFragmentManager, "SomeTag")

【讨论】:

    猜你喜欢
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多