Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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

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 在两个警报对话框之间传递信息_Android_Kotlin_Android Alertdialog - Fatal编程技术网

Android 在两个警报对话框之间传递信息

Android 在两个警报对话框之间传递信息,android,kotlin,android-alertdialog,Android,Kotlin,Android Alertdialog,第一个警报对话框中的ImageView打开第二个对话框,以更改第一个对话框中ImageView的imageResource。但是,我不知道如何在两个警报对话框之间建立连接 两者都有不同的xml布局,所以我假设在第二个对话框中,我应该引用第一个对话框的布局 private fun editItemDialog() { val dialogBuilder1 = AlertDialog.Builder(this) val inflater = this.layoutInflater

第一个警报对话框中的ImageView打开第二个对话框,以更改第一个对话框中ImageView的imageResource。但是,我不知道如何在两个警报对话框之间建立连接

两者都有不同的xml布局,所以我假设在第二个对话框中,我应该引用第一个对话框的布局

private fun editItemDialog() {
    val dialogBuilder1 = AlertDialog.Builder(this)
    val inflater = this.layoutInflater
    val dialogView = inflater.inflate(R.layout.edit_dialog, null)
    dialogBuilder1.setView(dialogView)

    var editIconButton = dialogView.findViewById<View>(R.id.editIcon) as ImageView

    editIconButton.setOnClickListener{
        showIconDialog()

    }



    dialogBuilder1.setTitle("Edit mode")
    dialogBuilder1.setPositiveButton("Save") { _, _ ->
       //sth
    }
    dialogBuilder1.setNegativeButton("Cancel") { _, _ ->
       //sth
    }
    val b = dialogBuilder1.create()
    b.show()
}     
private fun editItemDialog(){
val dialogBuilder1=AlertDialog.Builder(此)
val充气机=此充气机
val dialogView=充气机。充气(R.layout.edit_对话框,空)
dialogBuilder1.setView(dialogView)
var editIconButton=dialogView.findviewbyd(R.id.editIcon)作为ImageView
editIconButton.setOnClickListener{
showIconDialog()
}
dialogBuilder1.setTitle(“编辑模式”)
dialogBuilder1.setPositiveButton(“保存”){{},{->
//某物
}
dialogBuilder1.setNegativeButton(“取消”){{},{->
//某物
}
val b=dialogBuilder1.create()
b、 show()
}     

private fun showIconDialog(){
val dialogBuilder=AlertDialog.Builder(此)
val充气机=此充气机
val dialogView=充气机充气(R.layout.icons,null)
dialogBuilder.setView(dialogView)
//示例两个要选择的图标
var travelRB=dialogView.findviewbyd(R.id.travel)作为单选按钮
var travRB=dialogView.findviewbyd(R.id.travel)作为单选按钮
dialogBuilder.setTitle(“图标对话框”)
dialogBuilder.setMessage(“选择图标”)
dialogBuilder.setPositiveButton(“保存”){{},{->
//在此,我想更改ImageView的图标,例如:
editIconButton.setImageResource(R.id.travel)
dialogBuilder.setNegativeButton(“取消”){{},{->
//某物
}
val b=dialogBuilder.create()
b、 show()
}

您可以向第二个对话框添加回调

fun showIconDialog(回调:(可绘制)->Unit){
//代码
callback.invoke(someDrawable)
}
在第一个例子中,你只需这样做:

showIconDialog(){someDrawable->
//更改布局src图标的代码
}

我必须承认,使用回调对我来说是新的。我应该放什么来代替“someDrawable”,你应该将图标添加为Drawable(例如)ContextCompat.getDrawable(context,R.Drawable.iconFile),并在我添加注释的第一个对话框中添加editIconButton.backgroundDrawable(someDrawable)
private fun showIconDialog() {
    val dialogBuilder = AlertDialog.Builder(this)
    val inflater = this.layoutInflater
    val dialogView = inflater.inflate(R.layout.icons, null)
    dialogBuilder.setView(dialogView)

    //examplary two icons to select

    var travelRB = dialogView.findViewById<View>(R.id.travel) as RadioButton

    var travRB = dialogView.findViewById<View>(R.id.travel) as RadioButton


    dialogBuilder.setTitle("Icon dialog")
    dialogBuilder.setMessage("Select an icon")
    dialogBuilder.setPositiveButton("Save") { _, _ ->
         //here I would like to change an icon of the ImageView, for example:
         editIconButton.setImageResource(R.id.travel)

    dialogBuilder.setNegativeButton("Cancel") { _, _ ->
        //sth
    }
    val b = dialogBuilder.create()
    b.show()


}