我遇到一种情况,我想禁用我的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?) {
}
}
`
答案 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()