gpt4 book ai didi

android - 使用 WebView 的 Jetpack 导航无法正常工作

转载 作者:搜寻专家 更新时间:2023-11-01 09:21:21 25 4
gpt4 key购买 nike

我有一个 Fragment,里面有 ViewPager,它包含 3 个选项卡。我使用 Jetpack navigation 来处理导航。在第一个选项卡中,我有一个带有 WebViewFragment,根据 Jetpack 导航的 native 行为,它会在我们每次导航到另一个 fragment 时重新创建 View 。

这就是问题所在,每次我导航回 WebView Fragment 时它都会加载 URL。这无法使用实时数据处理。

我已经尝试缓存 Webview 内容,但它只是使加载速度更快,但不是即时的。

这是我的代码 fragment

MyFragment.kt

class MyFragment : BaseViewModelFragment<MyViewModel>(), View.OnClickListener {
override fun getContentResource(): Int = R.layout.fragment_my
override fun buildViewModel(): MyViewModel {
return ViewModelProviders.of(this, viewModelFactory)[MyViewModel::class.java]
}

override fun initLiveDataObservers() {
super.initLiveDataObservers()
}

override fun initViews() {
super.initViews()
setupWebView()
}

private fun setupWebView() = with(webView) {
settings.domStorageEnabled = true
settings.setAppCachePath("/data/data/" + activity?.packageName + "/cache")
settings.setAppCacheEnabled(true)
settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK
webViewClient = MyWebviewClient()
webChromeClient = MyChromeClient()
loadUrl("http://google.com")
}
}

我们会提供任何帮助,在此先感谢您!

最佳答案

我通过添加 WebView 运行时来修复它

class MyFragment : BaseViewModelFragment<MyViewModel>(), View.OnClickListener {

private val myWebview by lazy {
WebView(requireContext().applicationContext).apply {
webViewClient = MyWebviewClient()
webChromeClient = MyChromeClient()
}
}

override fun getContentResource(): Int = R.layout.fragment_home

override fun buildViewModel(): MyViewModel {
return ViewModelProviders.of(this, viewModelFactory)[MyViewModel::class.java]
}

override fun initLiveDataObservers() {
super.initLiveDataObservers()
}

override fun initViews() {
super.initViews()
container.addView(myWebview, ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT)
)
}

override fun onDestroyView() {
(myWebview.parent as ViewGroup).removeView(myWebview)
super.onDestroyView()
}
}

关于android - 使用 WebView 的 Jetpack 导航无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55022671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com