Android Jetpack Compose – AlertDialog

Android Jetpack AlertDialog composable is used to display an alert dialog with actionable items.

AlertDialog - Android Compose

AlertDialog contains title, text, and buttons, all of which are optional.

Examples

Show Alert Dialog on Button Click

In this example, we shall display an AlertDialog, when user clicks on Show Alert button. Inside the alert, we display title, some text to describe the alert, and a button to dismiss the alert.

We have taken a variable openDialog with default value of false. If the value of this variable is true, then the alert dialog is shown to user. We set openDialog to true when the user clicks on the button Show Alert. And inside the alert, we have a button Dismiss. When user clicks on Dismiss button, we set openDialog to false and the AlertDialog disappears.

Create a Project in Android Studio with Empty Compose Activity template, and modify MainActivity.kt file as shown in the following.

MainActivity.kt

</>
Copy
package com.example.myapplication
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.material.AlertDialog
import androidx.compose.material.Button
import androidx.compose.material.Text
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.example.myapplication.ui.theme.MyApplicationTheme
class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyApplicationTheme {
                Column(modifier = Modifier.padding(20.dp)) {
                    val openDialog = remember { mutableStateOf(false) }
                    if (openDialog.value) {
                        AlertDialog(
                            onDismissRequest = {
                                openDialog.value = false
                            },
                            title = {
                                Text(text = "Title for Alert")
                            },
                            text = {
                                Text(
                                    "Some text describing the alert's purpose."
                                )
                            },
                            buttons = {
                                Row(
                                    modifier = Modifier.padding(all = 8.dp).fillMaxWidth(),
                                    horizontalArrangement = Arrangement.End
                                ) {
                                    Button(
                                        onClick = { openDialog.value = false }
                                    ) {
                                        Text("Dismiss")
                                    }
                                }
                            }
                        )
                    }
                    Text(
                        "This is an example for Alert Dialog.",
                        fontSize = 20.sp,
                        modifier = Modifier.padding(vertical = 20.dp)
                    )
                    Button(onClick = {
                        openDialog.value = true
                    }) {
                        Text("Show Alert")
                    }
                }
            }
        }
    }
}

Screenshot

AlertDialog - Android Compose

Conclusion

In this Android Jetpack Compose Tutorial, we learned what AlertDialog composable is, and how to set properties like title, text, and buttons for AlertDialog, with the help of examples.