// TestRadioButton2 Example // Source code file: MainActivity.kt // Display the newly checked radio button when // the checked radio button changed // Jetpack Compose does not have radiobutton groups. // Instead, keep a single state variable that indicates // which radiobutton is selected. package it372.ssmith.testradiobutton2 import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.RadioButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { MainLayout( ) } } } @Composable fun MainLayout( ) { // State variables for composables var selected = remember { mutableStateOf(0) } var textDisplay = remember { mutableStateOf("") } val vegMap : String = mapOf(0 to "", 1 to "Asparagus", 2 to "Broccoli", 3 to "Cabbage").toString( ) Column(Modifier.padding(all = 50.dp), horizontalAlignment = Alignment.CenterHorizontally) { Row(verticalAlignment = Alignment.CenterVertically) { RadioButton( selected = selected.value == 1, onClick = { selected.value = 1 textDisplay.value = getVegetable(1) }, modifier = Modifier .padding(all = 20.dp) .size(width = 50.dp, height = 50.dp) ) Text(text = "Asparagus") } Row(verticalAlignment = Alignment.CenterVertically) { RadioButton( selected = selected.value == 2, onClick = { selected.value = 1 textDisplay.value = getVegetable(2) }, modifier = Modifier .padding(all = 20.dp) .size(width = 50.dp, height = 50.dp) ) Text(text = "Broccoli") } Row(verticalAlignment = Alignment.CenterVertically) { RadioButton( selected = selected.value == 3, onClick = { selected.value = 3 textDisplay.value = getVegetable(3) }, modifier = Modifier .padding(all = 20.dp) .size(width = 50.dp, height = 50.dp) ) Text(text = "Cabbage") } Text(text = textDisplay.value, Modifier .padding(all = 30.dp) .size(width=200.dp, height=100.dp), fontSize = 25.sp) } } @Preview(showBackground = true) @Composable fun GreetingPreview() { MainLayout( ) } // Get vegetable name from index for text display. fun getVegetable(index : Int) : String { when(index) { 0 -> return "" 1 -> return "Asparagus" 2 -> return "Broccoli" 3 -> return "Cabbage" else -> return "" } }