2014-02-20 7 views
0

Я разрабатываю относительно простое приложение для Android, которое имеет одно основное действие и 7 фрагментов, которые переключаются, когда пользователь переключает вкладки. Одним из вкладок является WebView, который просто загружает страницу Twitter в фрагменте. Поскольку он должен загружать URL-адрес, для этого требуется около 3-4 секунд, и я не хочу, чтобы пользователь делал это каждый раз, когда он загружал эту вкладку, и выключался и возвращался к ней, что происходит прямо Теперь. В идеале, мне бы хотелось, чтобы после первого запуска пользователем страницы страница не перегружалась каждый раз, пока это не понадобится.Сохранение состояния фрагмента при переключении фрагментов

Вот код фрагмента webView.

public class TwitterFragment extends Fragment { 

    WebView webView; 
    private static final String URL = "https://twitter.com/"; 

    public TwitterFragment() {}; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_twitter, container, false); 
     webView = (WebView) rootView.findViewById(R.id.webView); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.setWebViewClient(new WebViewClient()); 
     webView.loadUrl(URL); 


     return rootView; 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
    } 

Согласно this SO link, вы не можете остановить onCreateView от вызова каждый раз, что означает, что URL должен быть загружен каждый фрагмент возобновляется.

Кто-нибудь знает, как мне обойти эту ненужную загрузку URL-адреса каждый раз?

+0

Тогда не используйте onResume(), поставить некоторые условия, когда и хотите возобновить. – keshav

ответ

0

Если вы положили свои фрагменты внутри ViewPager, то у вас есть способ setOffscreenPageLimit, который позволяет сохранять состояния внесекундных фрагментов.

Любой способ сохранить данные twitter где-нибудь, вы можете написать json прямо в файл данных приложения, например, сохранить этот путь файла в sharedmemory вместе с меткой времени. Если временная метка слишком старая, вы получите новые данные. Это понадобится вам, когда вы повернете экран своего устройства, во время изменений конфигурации андроид вызовет Fragment.onSaveInstanceState. Полагаю, что сохранение этого файла решит все ваши проблемы.

[изменить] извините, теперь я вижу, что вы загружаете URL-адрес через веб-просмотр - не загружая его напрямую.

[edit2] Это так кажется, представить подобную проблему с вашим: WebView reloading when Fragment in ViewPager is retained form BackStack, решение заключается в использовании ViewPager с setOffscreenPageLimit

Смежные вопросы