我如何处理返回按钮按下对话框片段?



我是一个完全的新手,我的应用程序有一个主活动和一个测试活动。通常在测试活动中按后退按钮会将您带回到主活动。这很好,但是我想添加一个确认对话框,询问他们是否真的想首先放弃测试。到目前为止,我在测试活动中有以下内容:

override fun onBackPressed() {
var exit = ExitTestDialogFragment()
exit.show(supportFragmentManager,"exit")
}
class ExitTestDialogFragment : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return activity?.let {
val builder = AlertDialog.Builder(it)
builder.setTitle("Leave Test?")
builder.setMessage("Your score will be lost.")
.setPositiveButton("OK",
DialogInterface.OnClickListener { dialog, id ->
// This is where I'd like to return to Main Activity
})
.setNegativeButton("Cancel",
DialogInterface.OnClickListener { dialog, id ->
dialog.dismiss()// User cancelled the dialog
})
// Create the AlertDialog object and return it
builder.setCancelable(false)
builder.create()
} ?: throw IllegalStateException("Activity cannot be null")
}
}

我似乎无法弄清楚如何做什么通常是活动的super.onBackPressed()从对话框片段。就像我说的,我是android的新手,所以可能需要一点ELI5的答案。

DialogInterface.OnClickListener内调用finish()this.finish()。方法finish()将破坏调用它的当前活动,在这种情况下是test-taking activity

你应该从你的对话框中调用mainActivity。

.setPositiveButton("OK",
DialogInterface.OnClickListener { dialog, id ->
// here you can get your current activity                         
//then dismiss your dialog and finish current activity
//call context.finish or activity.finish here. It will 
//finish this activity    
//and will take you to the previous activity (in your case 
//to mainActivity)

})如果你需要任何进一步的帮助,请在评论中提出来

添加到容器对话框

dialog?.setOnKeyListener { dialog, keyCode, event ->
if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_UP) {
handleBack() // your code
return@setOnKeyListener true
} else
return@setOnKeyListener false
}

最新更新