我已将33.和targetSdkVersion和compileSdkVersion升级为
现在,不建议使用警告onBackPressed。
建议使用OnBackInvokedCallback或androidx.activity.OnBackPressedCallback来处理back导航。任何人都可以帮助我使用更新的方法。
示例:

用例:-在onBackPressed(){}方法中使用if (isTaskRoot) {}检查活动是否在活动堆栈上。
override fun onBackPressed() {
if (isTaskRoot) { // Check this activity is last on the activity-stack.(Check Whether This activity opened from Push-Notification)
startActivity(Intent(mContext, Dashboard::class.java))
finish()
} else {
finishWithResultOK()
}
}发布于 2022-06-15 16:41:27
根据您的API级别寄存器:
onBackInvokedDispatcher.registerOnBackInvokedCallback 33+onBackPressedDispatcher回调以实现反向单词兼容性"API级13+“这至少需要使用appcompat:1.6.0-alpha03;当前是1.6.0-alpha04
implementation 'androidx.appcompat:appcompat:1.6.0-alpha04'// kotlin
import androidx.activity.addCallback
if (BuildCompat.isAtLeastT()) {
onBackInvokedDispatcher.registerOnBackInvokedCallback(
OnBackInvokedDispatcher.PRIORITY_DEFAULT
) {
// Back is pressed... Finishing the activity
finish()
}
} else {
onBackPressedDispatcher.addCallback(this /* lifecycle owner */, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// Back is pressed... Finishing the activity
finish()
}
})
}更新:
感谢@ianhanniballake的评论;您甚至可以在API级别的OnBackPressedDispatcher中使用33+。
当使用Activity时,OnBackPressedDispatcher已经在内部使用Android特定的API,
所以,你可以这么做:
// kotlin
import androidx.activity.addCallback
onBackPressedDispatcher.addCallback(this /* lifecycle owner */, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// Back is pressed... Finishing the activity
finish()
}
})// java
import androidx.activity.OnBackPressedCallback;
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
// Back is pressed... Finishing the activity
finish();
}
});请注意,您不应该覆盖onBackPressed(),因为这将使onBackPressedDispatcher回调不会触发;请检查这个答案以澄清这一点。
发布于 2022-10-03 11:39:31
用下面的代码替换onBackPressed()。
onBackPressedDispatcher.onBackPressed()发布于 2022-10-15 08:49:39
与顶级答案的组合。下面是一个解决方案:
1.当您需要按后退按钮时,复制以下内容:
注意:它会自动破坏你的活动。
button.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}2.当您需要处理按下的后退按钮时,复制以下内容:
onBackPressedDispatcher.addCallback(this, object: OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// Whatever you want
// when back pressed
println("Back button pressed")
finish()
}
})https://stackoverflow.com/questions/72634225
复制相似问题