当我单击back按钮时,我想关闭服务中的连接并返回到上一个活动。
第二个活动中的代码:
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(mBound){
val dialog = ConfirmDialog()
dialog.show(supportFragmentManager, "confirm")
//should wait here until "yes" button is pressed and if so, run the code
mService.closeConnection()
finish()
}
return false
}
return super.onKeyDown(keyCode, event)
}
当对话框打开时,代码继续并关闭连接,并返回到前面的活动。我想等到我点击“是”按钮,然后继续下面的代码。我知道我应该将代码放在对话框中,但是我不能将服务绑定到对话框,所以我不能从那里停止连接。对话框:
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val builder = AlertDialog.Builder(requireActivity())
builder.setView(view)
.setTitle("Confirm")
.setMessage("Do you want to exit?")
.setNegativeButton("no", DialogInterface.OnClickListener(){ _: DialogInterface, _: Int ->
//TODO
})
.setPositiveButton("yes", DialogInterface.OnClickListener(){ _: DialogInterface, _: Int ->
//TODO
})
return builder.create()
}
同样,我想要的很简单,当单击back按钮时,我可以确认或拒绝,如果我确认,则关闭服务中的连接并返回到先前的活动。我想有一种更简单的方法可以做到这一点。
发布于 2020-10-01 05:51:22
我相信您的ConfirmDialog()函数会返回一个AlertDialog,在这种情况下,您可以这样访问警报对话框视图的组件,并在单击按钮时关闭连接:
dialog.(your_yes_button_id).setOnClickListener {
}
上面的代码应该在下面:
dialog.show(supportFragmentManager, "confirm")
https://stackoverflow.com/questions/64138726
复制相似问题