当片段ViewPager保留形式的WebView重装BackStack [英] WebView reloading when Fragment in ViewPager is retained form BackStack
问题描述
下面是一个code为基本片段
,其中包含一个的WebView
。
WebFragment.java
Here is a code for a basic Fragment
which contains a WebView
.
WebFragment.java
public class WebFragment extends Fragment {
String TAG = "WebFragment";
private WebView webView;
private String currentUrl = "http://www.google.com";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.webview_layout, null);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
webView = (WebView) getView().findViewById(R.id.helloWebview);
initWebView();
webView.loadUrl(currentUrl);
}
@SuppressLint("SetJavaScriptEnabled")
private void initWebView() {
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavaScriptInterface(), "HTMLOUT");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.e(TAG, "Loding...");
super.onPageStarted(view, url, favicon);
}
});
}
class JavaScriptInterface {
public void showHTML(String html) {
}
}
}
我有2个基本的片段也(不具有的WebView
)。然后我把所有这些3 片段
在 ViewPager
( WebFragment
,片段1
和 Fragment2
分别)使用 FragmentAdapter
。我加入安卓configChanges =方向|屏幕尺寸
在的AndroidManifest.xml
(所以的WebView
不会对CONFIGRATION变化realod)。
现在我的问题是,当运行应用程序,我改变了 ViewPager
的第一页(WebFragmet)到第2页(片段1
)我再次回到第1页。因此,没有问题 WebFragment
是因为它是。
现在,我又换了 ViewPager
这样的 WebFragment
- > 片段1
- > Fragment2
键,回到第1页通过反转上述行动的方向。但当时我看到 WebFragment
的的WebView
是重装。
I have 2 more basic fragments also(which doesn't have WebView
). Then I put all these 3 Fragments
in ViewPager
(WebFragment
, Fragment1
and Fragment2
respectively) using FragmentAdapter
. And I added android:configChanges="orientation|screenSize"
in AndroidManifest.xml
(So WebView
will not realod on configration change).
Now my problem is, While running app I changed the 1st page (WebFragmet) of ViewPager
to 2nd page(Fragment1
) and again I came back to 1st page. So no problem WebFragment
is as it is.
Now again I changed the ViewPager
like this WebFragment
-->Fragment1
-->Fragment2
and came back to 1st page by reversing the direction of above action. But at that time I saw the WebView
in WebFragment
is reloading.
和一个问题,每当的WebView
开始加载,我可以看到像2日志条目。
And one more problem, whenever the WebView
started loading I can see 2 log entry like.
WebFragment Loading...
WebFragment Loading...
所以我的问题是:
1)我如何prevent 的WebView
重装时, WebFragment
是 BackStack保留
?
2)为什么要在这里的WebView
加载两次?
So my question is :
1) How can I prevent WebView
reloading when the WebFragment
is retained from BackStack
?
2) Why here WebView
loading twice?
刚刚看到这个问题,并帮助我(<一href="http://stackoverflow.com/questions/14552377/$p$pvent-webview-reloads-in-fragmentpageradapter">$p$pvent的WebView在FragmentPagerAdapter重载?)。
Just see this question and help me(Prevent WebView reloads in FragmentPagerAdapter?).
推荐答案
在您的主要活动,你已经定义viewpager
In your main activity where you have defined viewpager
viewpager喜欢这行的声明后:
ViewPager viewpager =(ViewPager)findViewById(R.id.pager);
after the declaration of viewpager like this line :
ViewPager viewpager = (ViewPager) findViewById(R.id.pager);
添加此行:
viewpager.setOffscreenPageLimit(2);
这将prevent从重建高达两个屏幕刷卡,你的片段,所以当你将从第3页返回第一页viewpager,你的WebView不会重新加载。
This will prevent your fragment from recreated upto swipe of two screens,so when you will return from 3rd page to 1st page in viewpager,your webview will not reload.
这篇关于当片段ViewPager保留形式的WebView重装BackStack的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!