提问人:yeswhatdoyouwant 提问时间:10/17/2023 最后编辑:yeswhatdoyouwant 更新时间:10/18/2023 访问量:200
onBackPressed 已弃用 - android 应用中的 webView
onBackPressed is deprecated - webView in android app
问:
我有一个应用程序,其中的主要活动(扩展 ComponentActivity)几乎只是一个 webView。我已经覆盖了 onBackPressed,如下所示。
@Override
public void onBackPressed(){
if(this.webView.canGoBack){
this.webView.goBack();
}
else{
super.onBackPressed();
}
}
我这样做是为了当有浏览器历史记录时,它应该通过它而不是取消应用程序本身。这在装有 android 11 的平板电脑上运行我的应用程序时有效,但在装有 android 13 的手机上运行时不起作用。现在,当onBackPressed被弃用时,我真的不明白如何替换它并保持相同的行为。
尝试改用onBackPressedDispatcher,但没有成功。不知道是做错了,还是我只是处理错了。
答:
0赞
jima
10/17/2023
#1
也许您可以使用 onKeyDown 事件?
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true
}
return super.onKeyDown(keyCode, event)
}
0赞
Owais Yosuf
10/18/2023
#2
爪哇:
OnBackPressedCallback onBackPressedCallback = new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
webView.goBack();
}
};
OnBackPressedDispatcher onBackPressedDispatcher =
requireActivity().getOnBackPressedDispatcher();
onBackPressedDispatcher.addCallback(getViewLifecycleOwner(),
onBackPressedCallback);
科特林:
val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
webView.goBack()
}
}
onBackPressedDispatcher.addCallback(onBackPressedCallback)
评论
0赞
yeswhatdoyouwant
10/18/2023
这个 java 代码在 android 11 上对我有用,就像我的旧代码一样。它不会改变 android 13 的任何内容。我还能做些什么吗?另外,“super.onBackPressed();”的替代品是什么?
0赞
yeswhatdoyouwant
10/18/2023
我用一个简单的“finish();”解决了最后一部分,这就足够了吗?
0赞
Owais Yosuf
10/18/2023
如果它解决了,那么请接受这个答案。
0赞
yeswhatdoyouwant
10/18/2023
它没有,我的问题是我需要一些适用于 android 13 的东西,就像我说的,现在它只是作为我的旧代码,适用于 android 11。
评论