禁止返回WEBVIEW,但是启用AlertDialoge可以在退出时退出应用程序

时间:2019-10-08 10:22:50

标签: android webview android-webview

我遇到一种情况,我想禁用我的WEBVIEW以返回按下的返回键,但是在主屏幕上,我希望我的应用程序请求AlertDialog来询问我,是否需要退出应用程式?我已经尝试过了:

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
// import here your layout file like this
import kotlinx.android.synthetic.main.fragment_imageslider.view.*

class ImagesliderFragment : Fragment() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        arguments?.let {
        }
    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {


        val myView = inflater.inflate(R.layout.fragment_imageslider, container, false)

        myView.frag_rv.layoutManager = LinearLayoutManager(context, LinearLayout.HORIZONTAL, false)

        return myView
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

    }

}

`

1 个答案:

答案 0 :(得分:0)

您是否尝试过在活动级别覆盖onBackPressed

这通常是更改后退按钮行为的简便方法

https://developer.android.com/reference/android/app/Activity#onBackPressed()

例如

@Override
    public void onBackPressed() {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    ...
    }

更新:

更多地考虑这可能是一个焦点问题,Web视图可能并不总是成为关键事件的焦点。

最好使用onBackPressed在活动级别处理退出应用对话框,而不要返回Web视图中的网页。

我不确定使用和onKeyListener是否最可靠,因为它用于硬件键盘。防止Web视图返回的另一种方法是在Web视图完成加载后清除历史记录,因此没有任何内容可以返回。 https://developer.android.com/reference/android/webkit/WebView#clearHistory()