android - 如何在 WebViewClient 中获取 SharedPreferences 值?
问题描述
大家好,我正在努力在 webviewClient 中获取 SharedPreferences 布尔值。我需要它来控制 webview 的某些属性,例如启用缩放、cookie 等。我在getBaseContext上遇到错误
这是我的代码:
class WebViewClient : android.webkit.WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
val pref = PreferenceManager.getDefaultSharedPreferences(getBaseContext())
val zoom = pref.getBoolean("ZoomControls", false)
val webView = view as com.winkbr.browser.activity.WebView
webView.progressBar?.isVisible = true
if (!zoom) {
webView.settings.builtInZoomControls = true
} else {
webView.settings.displayZoomControls = false
}
}
} ```
Thanks in advance.
解决方案
try to use Context
given by WebView
val pref = PreferenceManager.getDefaultSharedPreferences(view.getContext())
getBaseContext()
method belongs to ContextWrapper
class. Activity
, Service
, Application
and some other components are extending it, so it is available only in these
推荐阅读
- rest - hybris 的招摇文档
- xamarin.forms - 使用行为禁用/启用基于必填字段为空或为空的保存按钮
- flutter - 如何创建 IOS 模拟器 Flutter
- angular - 使用 @angular-redux/store 时 Redux 4.0.0 出错
- xpath - Google 表格中的 Xpath 实现
- java - Aapt2错误android工作室
- r - 包未提供的功能
- powershell - 如何在电源外壳中传递多个参数文件
- c# - 如果属性是来自 Json/Api 响应 C# 的空 ('') 字符串,则忽略该属性
- java - 如何优先考虑在信号量中等待的线程?