Hier ist ein Code für eine Basis Fragment
, die eine WebView
enthält.
WebFragment.java
WebView wird neu geladen, wenn Fragment in ViewPager beibehalten wird 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) {
}
}
}
Ich habe 2 basische Fragmente auch (die WebView
nicht hat). Dann setze ich all diese 3 Fragments
in ViewPager
(WebFragment
, Fragment1
bzw. Fragment2
) unter Verwendung FragmentAdapter
. Und ich fügte hinzu android:configChanges="orientation|screenSize"
in AndroidManifest.xml
(So WebView
wird nicht realod auf Konfiguration ändern).
Jetzt ist mein Problem, während laufender App habe ich die 1. Seite (WebFragmet) von ViewPager
zur 2. Seite geändert (Fragment1
) und wieder kam ich zurück zur 1. Seite. Also kein Problem WebFragment
ist so wie es ist.
Jetzt wieder habe ich die ViewPager
wie folgt geändert WebFragment
->Fragment1
->Fragment2
und kam zurück zur 1. Seite durch Umkehr der Richtung der oben genannten Aktion. Aber zu dieser Zeit sah ich die WebView
in WebFragment
wird neu geladen.
Und noch ein Problem, wann immer die WebView
gestartet Laden ich kann 2 Protokolleintrag wie sehen.
WebFragment Loading...
WebFragment Loading...
Also meine Frage ist:
1) Wie kann ich WebView
Nachladen verhindern, wenn die WebFragment
von BackStack
zurückgehalten wird?
2) Warum hier WebView
zweimal laden?
Sehen Sie sich einfach diese Frage an und helfen Sie mir (Prevent WebView reloads in FragmentPagerAdapter?).
Ziemlich sicher, das ist die richtige Antwort. – Wamasa
@Chirag Shah eigentlich weiß ich das ('viewpager.setOffscopePageLimit (2);') aber wenn ich 5 oder mehr 'Fragmente' in meinem' ViewPager' mit 'WebView' habe, wenn ich' viewpager.setOffscreenseiteLimit (5+); ', Es wird eine schlechte Option sein, richtig? Was du sagst? –
Können Sie für meine zweite Frage antworten? –