Android AlertDialog в Kotlin является подклассом класса Dialog и используется, чтобы предложить небольшому диалоговому окну принять решение, прежде чем пользователь сможет продолжить ту же операцию, не меняя экрана. В диалоговом окне отображается заголовок, сообщение, до трех кнопок или пользовательский макет.
Экземпляр класса AlertDialog.Builder используется для создания диалогового окна предупреждения. Через диалог предупреждений мы принимаем положительное (да), отрицательное( нет) и нейтральное (отмена) решение.
Пример Kotlin Android AlertDialog
В этом примере мы вызываем диалоговое окно предупреждения, нажимая кнопку. В диалоговом окне задаются три действия по принятию решения: положительное, отрицательное и нейтральное.
Activity_main.xml
Добавьте следующий код в файл activity_main.xml. В этом файле макета мы добавляем кнопку для вызова диалогового окна предупреждения.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="example.javatpoint.com.kotlinalertdialog.MainActivity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="@string/button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
strings.xml
В файл strings.xml добавьте следующий код.
<resources>
<string name="app_name">Kotlin AlertDialog</string>
<string name="button">click button</string>
<string name="dialogTitle">Delete File</string>
<string name="dialogMessage">Deleting file may be harm your system</string>
</resources>
MainActivity.kt
Добавьте следующий код в класс MainActivity.kt. Экземпляр класса AlertDialog.Builder вызывает методы setTitle(), setMessage(), setIcon() для установки заголовка диалогового окна, сообщения и значка соответственно.
Чтобы установить действие в диалоговом окне предупреждения, вызовите методы setPositiveButton(), setNeutralButton() и setNegativeButton() для положительного, нейтрального и отрицательного действия соответственно. Метод show() объекта AlertDialog.Builder в Котлин используется для отображения диалогового окна предупреждения.
package example.javatpoint.com.kotlinalertdialog
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v7.app.AlertDialog
import android.widget.Button
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
val builder = AlertDialog.Builder(this)
//set title for alert dialog
builder.setTitle(R.string.dialogTitle)
//set message for alert dialog
builder.setMessage(R.string.dialogMessage)
builder.setIcon(android.R.drawable.ic_dialog_alert)
//performing positive action
builder.setPositiveButton("Yes"){dialogInterface, which ->
Toast.makeText(applicationContext,"clicked yes",Toast.LENGTH_LONG).show()
}
//performing cancel action
builder.setNeutralButton("Cancel"){dialogInterface , which ->
Toast.makeText(applicationContext,"clicked cancel\n operation cancel",Toast.LENGTH_LONG).show()
}
//performing negative action
builder.setNegativeButton("No"){dialogInterface, which ->
Toast.makeText(applicationContext,"clicked No",Toast.LENGTH_LONG).show()
}
// Create the AlertDialog
val alertDialog: AlertDialog = builder.create()
// Set other dialog properties
alertDialog.setCancelable(false)
alertDialog.show()
}
}
}
Выход:



