如何对 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()
所以我得到了关于 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()