Android 在两个警报对话框之间传递信息
第一个警报对话框中的ImageView打开第二个对话框,以更改第一个对话框中ImageView的imageResource。但是,我不知道如何在两个警报对话框之间建立连接 两者都有不同的xml布局,所以我假设在第二个对话框中,我应该引用第一个对话框的布局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
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()
}