我有一个表单,希望在用户离开之前得到用户的确认消息。
我想在用户触摸此按钮时提供自定义后退按钮:
我试试这个:
val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
}
}
requireActivity().onBackPressedDispatcher.addCallback(this,onBackPressedCallback)
但似乎只能为内置软件/硬件后退按钮提供自定义后退行为,而不是后退箭头按钮
我该怎么做?
答案 0 :(得分:1)
使用onSupportNavigateUp
,并将yourCurrentFragmentID
替换为当前的片段ID。所有这些都应在MainActivity中完成。
navController = findNavController(R.id.nav_host_fragment)
setupActionBarWithNavController(navController!!)
override fun onSupportNavigateUp(): Boolean {
return when(navController?.currentDestination?.id) {
R.id.yourCurrentFragmentID -> {
showDialog()
true
}
else -> navController?.navigateUp()!!
}
}
修改
如果您的片段已经使用onOptionsItemSelected
,则可以通过检查itemId
来处理逻辑。
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val id = item.itemId
if (id == R.id.save) {
// your save button code logic
}else if(id ==android.R.id.home){
// display confirmation message
}
return super.onOptionsItemSelected(item)
}
答案 1 :(得分:0)
如果您只想从Activity返回,则可以在AndroidManifest.xml子类Activity中添加。
android:parentActivityName="Parent_Activity_Name
答案 2 :(得分:0)
使用此代码可在backpress上设置“活动”。
override fun onBackPressed() {
if (isDiscardChanges) {
discardDialog()
} else {
super.onBackPressed()
}
}