J'utilise tab-layout avec 5 fragment. Et chaque fragment a webview avec un lien web unique. Le temps que je sélectionne l'onglet tout fonctionne bien. Mais quand je reviens sur le même onglet qui est terminé chargé avant de recharger à nouveau. Y at-il une raison pour laquelle je peux enregistrer le contenu dans le fragment de sorte que je dois charger le lien fragment une seule fois.charger webview une seule fois dans tablayout avec beaucoup de fragment
mon code
public class MainActivity extends AppCompatActivity {
TabLayout tabLayout;
ViewPager viewPager;
private int[] tabIcons = {
R.drawable.ic_tab_1,
R.drawable.ic_tab_2,
R.drawable.ic_tab_3,
R.drawable.ic_tab_4,
R.drawable.ic_tab_5,
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
setupTabIcons();
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new Fragment1(),"1");
adapter.addFragment(new Fragment2(), "2");
adapter.addFragment(new Fragment3(),"3");
adapter.addFragment(new Fragment4(), "4");
adapter.addFragment(new Fragment5(), "5");
viewPager.setAdapter(adapter);
}
private void setupTabIcons() {
tabLayout.getTabAt(0).setIcon(tabIcons[0]);
tabLayout.getTabAt(1).setIcon(tabIcons[1]);
tabLayout.getTabAt(2).setIcon(tabIcons[2]);
tabLayout.getTabAt(3).setIcon(tabIcons[3]);
tabLayout.getTabAt(4).setIcon(tabIcons[4]);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return null;
}
}
}
fragmenter est
public class Fragment1 extends Fragment {
WebView web;
private SmoothProgressBar mProgressBar;
private SwipeRefreshLayout mySwipeRefreshLayout;
public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle saveInstanceState) {
View view = inflater.inflate(R.layout.fragment_1, viewGroup, false);
web = (WebView) view.findViewById(R.id.id_web);
mProgressBar = (SmoothProgressBar)view.findViewById(R.id.google_now);
mySwipeRefreshLayout = (SwipeRefreshLayout)view.findViewById(R.id.swipeContainer);
mySwipeRefreshLayout.setOnRefreshListener(
new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
web.reload();
}
}
);
loadingThePage();
return view;
}
private void loadingThePage(){
web.setWebViewClient(new myWebClient());
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setAppCacheEnabled(true);
web.loadUrl("https://www.google.com/");
}
public class myWebClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
mySwipeRefreshLayout.setRefreshing(false);
mProgressBar.progressiveStart();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request,
WebResourceError error) {
super.onReceivedError(view, request, error);
mySwipeRefreshLayout.setRefreshing(false);
mProgressBar.progressiveStop();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mySwipeRefreshLayout.setRefreshing(false);
mProgressBar.progressiveStop();
}
}
}
peut-être que vous êtes à la recherche de ceci? 'viewPager.setOffScreenPageLimit (5)' –
[Peut être ceci] (https://developer.android.com/reference/android/webkit/WebSettings.html#setCacheMode (int)) –
@ sam_0829 qu'est-ce que cela fait? –