Как изменить сообщение диалогового окна с предупреждением при нажатии одной из его кнопок? - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть AlertDialog с кнопками «Скажите мне больше» и «ОК», я хочу изменить его сообщение, когда пользователь нажимает кнопку «Скажите мне больше», и скрыть эту кнопку. Как я могу это сделать?

У меня есть этот код в настоящее время:

new AlertDialog
    .Builder(this)
    .setMessage("Initial message")
    .setNeutralButton("Tell me more", (dialog, which) -> {
        // change dialog's message to "Detailed message".
        // hide this "Tell me more" button
    })
    .setNegativeButton(android.R.string.ok, (dialog, which) -> dialog.dismiss())
    .show();

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

не используйте AlertDialog, используйте Dialog. или, в вашем случае, вы можете показать другой или новый AlertDialog на кнопке, кликнув

пример в kotlin

fun showDialogWithButton() {
val dialog = Dialog(this)
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
dialog.setContentView(R.layout.dialog_layout)
dialog.setCanceledOnTouchOutside(true)
dialog.setCancelable(true)

val tvMess = dialog.findViewById(R.id.tv_body_dialog) as TextView
val btnOk = dialog.findViewById(R.id.btn_ok) as Button
var more = false
tvMess.text = "Initial message"
btnTell.text = "Tell me more"
btnOk.setOnClickListener {
if(!more)
{
        tvMess.text = "some thing more"
        btnOk.text = "OK"}
more = true
}else{
dialog.dismiss()
}

}
dialog.show()

}

0 голосов
/ 05 апреля 2020

Вместо использования метода setMessage вам придется создать собственный макет для вашего диалога с кнопками в макете. Затем вы должны настроить прослушиватели нажатий на кнопки в макете и обновить текст и видимость кнопок в макете.

val binding = MyDialogBinding.inflate(/* todo */)
binding.button.setOnClickListener {
    binding.button.isVisible = false
    binding.textView.text = /* new text here */
}
new AlertDialog.Builder(this).setView(binding.root).show()
...