Как сделать элементы диалога Alert? - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу создать диалоговые элементы оповещения.Вот мой код.

val colors = arrayOf("Red","Green","Blue")
        val builder = AlertDialog.Builder(this)

        builder.setTitle("Pick a color")
        builder.setItems(colors) {_,_ ->
            Toast.makeText(this,"Red Color",Toast.LENGTH_LONG).show()
            Toast.makeText(this,"Green Color",Toast.LENGTH_LONG).show()
            Toast.makeText(this,"Blue Color",Toast.LENGTH_LONG).show()
        }
        builder.show()
    }
}

В результате появляется диалоговое окно с тремя вариантами выбора: красный, зеленый и синий.Но проблема в том, что если я нажимаю, например, на красный цвет, то он показывает три тоста, а если я нажимаю на синий / зеленый цвет, он показывает то же самое.Так как же показать конкретный тост на выбранном цвете?

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

Alert Dialog с тремя кнопками
1. setPositiveButton
2. setNegativeButton
3. setNeutralButton

Вы можете создать каждую часть слушателя по отдельности.

builder.setPositiveButton("RED"){dialog, which ->
                // Do something when user press the positive button
            }

            // Display a negative button on alert dialog
builder.setNegativeButton("GREEN"){dialog,which ->
                // Do something when user press the negative button
            }

            // Display a neutral button on alert dialog
builder.setNeutralButton("BLUE"){_,_ ->
                // Do something when user press the neutral button
            }
0 голосов
/ 27 сентября 2018
AlertDialog.Builder(this)
                .setItems(arrayOf("RED", "GREEN", "BLUE")) { _, pos ->
                    when (pos) {
                        0 -> {
                            Toast.makeText(this@MainActivity, "Red selected", Toast.LENGTH_SHORT).show()
                        }
                        1 -> {
                            Toast.makeText(this@MainActivity, "Green selected", Toast.LENGTH_SHORT).show()
                        }
                        2 -> {
                            Toast.makeText(this@MainActivity, "Blue selected", Toast.LENGTH_SHORT).show()
                        }
                        else -> {
                            Toast.makeText(this@MainActivity, "Nothing selected", Toast.LENGTH_SHORT).show()
                        }
                    }
                }
                .show()

Вы можете поместить код внутри блока.

0 голосов
/ 27 сентября 2018
 builder.setItems(colors) { dialog, position -> 
        Toast.makeText(this,colors[position],Toast.LENGTH_LONG).show() 
    }

Вы можете использовать аргумент позиции, чтобы получить желаемый цвет.

...