我有一个简单的撰写对话框,我需要知道何时关闭对话框并返回到活动,以便我可以触发该活动中的函数。此函数应该仅在我关闭对话框后触发。我应该如何/是否将参数传递到此对话框中?如何让它知道我何时返回活动?活动如下:
binding.impersonateSection.apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
var openDialog= remember { mutableStateOf(false) }
ButtonComponent(
onClick = {openDialog.value = true}
)
if (openDialog.value) {
MyCustomDialogPopUp(openDialog)
}
然后我的可组合对话框如下所示:
fun CustomDialogPopUp(openDialogBox: MutableState<Boolean>) {
AlertDialog(
title = { Text("Are you sure you want to delete this?") },
dismissButton = {
TextButton(onClick = { openDialogBox= false }) {
Text("Cancel".uppercase())
}
)
您可以尝试将 Activity 函数传入 Dialog,并在 Dialog 关闭时调用它。请参阅以下示例,了解如何将 Activity 函数引用传递给 Composable
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//...
binding.impersonateSection.apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
var openDialog = remember { mutableStateOf(false) }
ButtonComponent(
onClick = {openDialog.value = true}
)
if (openDialog.value) {
// We pass an Activity Function Reference to the Dialog
MyCustomDialogPopUp(openDialog, ::activityFunction)
}
}
}
fun activityFunction(param: Int) {
Toast.makeText(this, param.toString(), Toast.LENGTH_SHORT).show()
}
}
然后在您的对话框可组合项中:
fun CustomDialogPopUp(
openDialogBox: MutableState<Boolean>,
onDismissCallback: (returnValue: Int) -> Unit
) {
AlertDialog(
title = { Text("Are you sure you want to delete this?") },
dismissButton = {
TextButton(onClick = { openDialogBox = false; onDismissCallback(123) }) {
Text("Cancel".uppercase())
}
}
)
}