kotlin onBackPressed is deprecated - webView in android app

hrirmatl  于 2023-10-23  发布在  Kotlin
关注(0)|答案(2)|浏览(171)

我有一个应用程序,其中的主活动(扩展了Activity)几乎只是一个webView。我已经覆盖了BackPressed,如下所示。

@Override
public void onBackPressed(){
  if(this.webView.canGoBack){
    this.webView.goBack();
  }
  else{
    super.onBackPressed();
  }
}

我这样做是为了当有浏览器历史记录时,它应该通过它,而不是取消应用程序本身。这在我的平板电脑上运行我的应用程序时有效,我的平板电脑上有android 11,但在我的手机上没有android 13。现在,当onBackPressed被弃用时,我真的不知道如何替换它并保持相同的行为。
已尝试使用onBackPressedDispatcher,但未成功。不知道是我做错了,还是我处理的方式不对。

deikduxw

deikduxw1#

也许你可以使用onKeyDown事件?

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {

    if (keyCode == KeyEvent.KEYCODE_BACK) {
        return true
    }

    return super.onKeyDown(keyCode, event)
}
3j86kqsm

3j86kqsm2#

**:

OnBackPressedCallback onBackPressedCallback = new OnBackPressedCallback(true) {
    @Override
    public void handleOnBackPressed() {
        webView.goBack();
    }
};
OnBackPressedDispatcher onBackPressedDispatcher = 
requireActivity().getOnBackPressedDispatcher();
onBackPressedDispatcher.addCallback(getViewLifecycleOwner(), 
onBackPressedCallback);

Kotlin酒店:

val onBackPressedCallback = object : OnBackPressedCallback(true) {
    override fun handleOnBackPressed() {
        webView.goBack()
    }
}
onBackPressedDispatcher.addCallback(onBackPressedCallback)

相关问题