下面是一個基本Fragment
的代碼,其中包含WebView
。
WebFragment.java
當ViewPager中的片段被保留時,WebView重新加載BackStack
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
)。然後我使用FragmentAdapter
將所有這些3 Fragments
分別放在ViewPager
(WebFragment
,Fragment1
和Fragment2
)中。並且我在AndroidManifest.xml
中添加了android:configChanges="orientation|screenSize"
(因此WebView
在配置更改時不會實現)。
現在我的問題是,在運行應用程序時,我將ViewPager
的第1頁(WebFragmet)更改爲第2頁(Fragment1
),並且我又回到了第1頁。所以沒問題,WebFragment
就是這樣。
現在我再次改變ViewPager
這樣WebFragment
→Fragment1
→Fragment2
並且通過顛倒上述動作的方向回到第1頁。但那時我看到WebView
在WebFragment
正在重新加載。
還有一個問題,只要WebView
開始加載,我可以看到2個日誌條目。
WebFragment Loading...
WebFragment Loading...
所以我的問題是:
1)如何防止WebView
重裝時WebFragment
從BackStack
保留?
2)爲什麼在這裏WebView
加載兩次?
只看到這個問題,幫我(Prevent WebView reloads in FragmentPagerAdapter?)。
很確定這是正確的答案。 – Wamasa 2013-05-09 14:04:34
@Chirag Shah其實我知道這一點('viewpager.setOffscreenPageLimit(2);'')但如果我設置'viewpager.setOffscreenPageLimit(5+);如果我有'WebView'我'ViewPager'中有5個或更多'Fragments'; ',這將是一個糟糕的選擇,究竟?你說的話? – 2013-05-09 18:36:51
你能回答我的第二個問題嗎? – 2013-05-09 18:38:07