2014-01-06 2 views
7

У меня есть приложение, которое использует фрагменты для создания адаптера страницы. Я использую это для создания вкладки салфетки, которая загружает другой фрагмент. Каждый фрагмент загружает веб-просмотр, который отображает специально отформатированный веб-сайт. Прямо сейчас мое приложение загружает только фрагменты, а также те, которые находятся слева и справа от него. Я хотел бы загрузить все шесть вкладок сразу и никогда больше. Есть ли способ сделать это?Загрузить все фрагменты при открытии приложения

import android.content.res.Configuration; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 

public class MainActivity extends FragmentActivity { 

    ViewPager viewPager=null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      viewPager = (ViewPager) findViewById(R.id.pager); 
      FragmentManager fragmentManager=getSupportFragmentManager(); 
      viewPager.setAdapter(new MyAdapter(fragmentManager));  
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
    } 

} 

class MyAdapter extends FragmentPagerAdapter { 


    public MyAdapter(FragmentManager fm) { 
      super(fm); 

      // TODO Auto-generated constructor stub 
    } 

    @Override 
    public Fragment getItem(int i) { 
      Fragment fragment=null; 
      if(i==0)fragment=new Introduction(); 
      if(i==1)fragment=new Arena(); 
      if(i==2)fragment=new Game(); 
      if(i==3)fragment=new Robot(); 
      if(i==4)fragment=new Tournament(); 
      if(i==5)fragment=new Glossary(); 
      return fragment; 
    } 

    @Override 
    public int getCount() { 
      // TODO Auto-generated method stub 
      return 6; 
    } 

    public CharSequence getPageTitle(int position) { 
      String title=new String(); 
      if(position==0)return "Summary"; 
      if(position==1)return "The Arena"; 
      if(position==2)return "The Game"; 
      if(position==3)return "The Robot"; 
      if(position==4)return "The Tournament"; 
      if(position==5)return "Glossary"; 
      return null; 
    } 
} 

ответ

22

звонок setOffscreenPageLimit с номером более половины ваших фрагментов. Это заставит viewpager создавать и хранить все фрагменты, созданные в вашем адаптере.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     viewPager = (ViewPager) findViewById(R.id.pager); 
     // use a number higher than half your fragments. 
     viewPager.setOffscreenPageLimit(4); 
     FragmentManager fragmentManager=getSupportFragmentManager(); 
     viewPager.setAdapter(new MyAdapter(fragmentManager));  
} 
+1

Хорошо. Это помогло мне – pratz9999

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