Đây là mã cho số Fragment
cơ bản có chứa WebView
.
WebFragment.java
WebView tải lại khi Fragment trong ViewPager được giữ lại dưới dạng 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) {
}
}
}
tôi có 2 mảnh cơ bản hơn cũng (mà không có WebView
). Sau đó, tôi đặt tất cả 3 Fragments
này vào số ViewPager
(WebFragment
, Fragment1
và Fragment2
tương ứng) sử dụng FragmentAdapter
. Và tôi đã thêm android:configChanges="orientation|screenSize"
vào AndroidManifest.xml
(Vì vậy, WebView
sẽ không được thực hiện trên thay đổi cấu hình).
Bây giờ vấn đề của tôi là, Trong khi chạy ứng dụng tôi đã thay đổi trang thứ nhất (WebFragmet) của ViewPager
thành trang thứ hai (Fragment1
) và một lần nữa tôi trở lại trang đầu tiên. Vì vậy, không có vấn đề WebFragment
là như nó được.
Bây giờ một lần nữa tôi đã thay đổi ViewPager
như thế này WebFragment
->Fragment1
->Fragment2
và trở lại trang đầu tiên bằng cách đảo ngược hướng của hành động trên. Nhưng vào thời điểm đó tôi thấy số WebView
ở số WebFragment
đang tải lại.
Và một vấn đề nữa, bất cứ khi nào WebView
bắt đầu tải, tôi có thể thấy 2 mục nhập nhật ký như thế nào.
WebFragment Loading...
WebFragment Loading...
Vì vậy, câu hỏi của tôi là:
1) Làm thế nào tôi có thể ngăn chặn WebView
nạp lại khi WebFragment
được giữ lại từ BackStack
?
2) Tại sao ở đây WebView
tải hai lần?
Chỉ cần xem câu hỏi này và giúp tôi (Prevent WebView reloads in FragmentPagerAdapter?).
Chắc chắn đây là câu trả lời đúng. – Wamasa
@Chirag Shah thực sự tôi biết điều này ('viewpager.setOffscreenPageLimit (2);') nhưng nếu tôi có 5 hoặc nhiều hơn 'Fragments' trong' ViewPager' của tôi với 'WebView' nếu tôi đặt' viewpager.setOffscreenPageLimit (5+); ', Nó sẽ là một lựa chọn tồi, rigth? Những gì bạn nói? –
Bạn có thể trả lời cho câu hỏi thứ 2 của tôi không? –