今天我遇到了WebView在Fragment中使用Android Navigation Component的问题,在我的例子中,在Fragment1中,在WebView下面有按钮,用户需要向下滚动才能单击它,点击它后,一个新目的地被打开了(Fragment2 ),当用户回到Fragment1时,WebView重新加载,viewport再次滚动到顶部。
它非常讨厌,用户可能已经向下滚动了几分钟,在返回后,总是把他扔到最顶端。我可以阻止它重新加载/滚动回到顶部?
例子代码的简单程度如下所示:class Fragment1 : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
webView.loadData(getString(R.string.some_very_long_html),"text/html","UTF-8")
buttonBelowWebView.setOnClickListener {
navigateToFragment2()
}
}
}
如果WebView包含视频,则加载可能需要5秒钟。这是一次可怕的经历。
我尝试添加标志只加载一次,但是,从Fragment2返回时WebView是空的:class Fragment1 : Fragment() {
var loaded = false
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if(!loaded) {
webView.loadData(getString(R.string.some_very_long_html),"text/html","UTF-8")
loaded = true
}
}
}
另外,我提供的示例代码是用Kotlin编写的,但是,如果有Java解决方案,也非常棒。
是否可以重新加载WebView,并且重新导航回到原来滚动的位置?