Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android kotlin自定义警报对话框赢得';不要按程序排除_Android_Kotlin - Fatal编程技术网

Android kotlin自定义警报对话框赢得';不要按程序排除

Android kotlin自定义警报对话框赢得';不要按程序排除,android,kotlin,Android,Kotlin,因此,我有一个带有自定义视图的警报对话框。 我将它设置在与片段不同的类中 我对此也有同样的问题。.show()已成功执行,但.disease()无法工作,因此即使调用了disease(),对话框仍在那里 这是我设置警报对话框的类 class LoadingDialog(val currentContext: Context) { val loadingDialogLayout = LayoutInflater.from(currentContext).inflate(R.layout.l

因此,我有一个带有自定义视图的警报对话框。 我将它设置在与片段不同的类中

我对此也有同样的问题。
.show()
已成功执行,但
.disease()
无法工作,因此即使调用了
disease()
,对话框仍在那里

这是我设置警报对话框的类

class LoadingDialog(val currentContext: Context) {

   val loadingDialogLayout = LayoutInflater.from(currentContext).inflate(R.layout.loading_dialog_layout, null)

    val loadingDialog = AlertDialog
            .Builder(currentContext)
            .setView(loadingDialogLayout)
            .setCancelable(false)
            .create()


    fun show() {
        loadingDialog.show()
    }


    fun dismiss() {
        loadingDialog.dismiss()
    }
}
这就是我在片段中对它的称呼

....

LoadingDialog(activity as AppCompatActivity).show() <- Here

    EHealthServiceClient.eHealthInstance.requestPickup(orderId).enqueue(object : Callback<DefaultResponse> {
        override fun onFailure(call: Call<DefaultResponse>, t: Throwable) {

            LoadingDialog(activity as AppCompatActivity).dismiss() <- Here

            ...
        }

        override fun onResponse(call: Call<DefaultResponse>, response: Response<DefaultResponse>) {

            LoadingDialog(activity as AppCompatActivity).dismiss() <- Here

            if (response.code() == 200) {
                ...
            } else {
               ...
            }

        }
    })
}
。。。。

LoadingDialog(活动作为AppCompatActivity).show()问题是每次都要实例化一个新的
LoadingDialog
类,然后创建一个新的
AlertDialog
实例

将LoadingDialog类更改为如下对象

object LoadingDialog {

    lateinit var loadingDialog: AlertDialog

    fun show(activity: Activity) {
        val loadingDialogLayout = LayoutInflater.from(activity).inflate(R.layout.loading_dialog_layout, null)
        this.loadingDialog = AlertDialog
            .Builder(activity)
            .setView(loadingDialogLayout)
            .setCancelable(false)
            .create()

        loadingDialog.show()
    }


    fun dismiss() {
        if (::loadingDialog.isInitialized) {
            loadingDialog.dismiss()
        }
    }
}
然后你就可以打电话了

LoadingDialog.show(<your-context>)
LoadingDialog.dismiss()