如何对 AlertDialog Kotlin 中的项目使用 OnClickListener?

How to use OnClickListener for items in AlertDialog Kotlin?

所以我得到了关于 AlertDialog 的 java 代码:

AlertDialog.Builder builder= new AlertDialog.Builder(context:this);
builder.setTitle("Pick Image")
     .setItems(options, new DialogInterface.OnClickListener(){
          @Override
          public void onClick(DialogInterface dialog, int which){
            if(which==0){
             if(checkCameraPermission())pickFromcamera();
             else requestCameraPermission(); 
            } else{
              if(checkStoragePermission()) pickFromGallery();
              else requestStoragePermission();
             }
    }
}

并且我尝试在我的 Kotlin 项目中使用它,所以我对其进行了一些更改。我的代码看起来像:

val options: Array<String> = arrayOf("Kamera","Gallery")
        val builder= AlertDialog.Builder(this)
        builder.setTitle("Pilih Gambar")
            .setItems(options,DialogInterface.OnClickListener(){
                @Override
                fun onClick(dialog: DialogInterface, which: Int){
                    if(which==0){
                        if(checkCameraPermission()){
                            pickFromCamera()
                        }
                        else{
                            requestCameraPermission()
                        }
                    }
                    else{
                        if(checkStoragePermission()){
                            pickFromGallery()
                        }
                        else{
                            requestStoragePermission()
                        }
                    }
                }
            })
            .show()

但是我在 setItems 中收到此错误: Expected 2 parameters of types DialogInterface!, Int。为什么会这样?我做错了什么?

您将 Java 与 Kotlin 相结合。假设您尝试在 Kotlin 中执行此操作,请尝试使用您在 lambda 内部的逻辑来编写它。

    val options: Array<String> = arrayOf("Kamera","Gallery")
        val builder= AlertDialog.Builder(requireContext())
        builder.setTitle("Pilih Gambar").setItems(options) { dialog, which ->
            if(which==0){
                    if(checkCameraPermission()){
                        pickFromCamera()
                    }
                    else{
                        requestCameraPermission()
                    }
                }
                else{
                    if(checkStoragePermission()){
                        pickFromGallery()
                    }
                    else{
                        requestStoragePermission()
                    }
                }
        }
        .show()