在加载应用程序打开的所有片段 [英] Load all fragments on app opening
问题描述
我有一个使用片段创建一个页面适配器的应用程序。我使用它来创建它加载不同片段的刷卡标签。每个片段输出的WebView它显示一个特殊格式的网站。现在我的应用程序只加载它是碎片和那些到左边和右边。我想一次和永远不会再加载所有六个选项卡。有没有办法做到这一点?
进口android.content.res.Configuration;
进口android.os.Bundle;
进口android.support.v4.app.Fragment;
进口android.support.v4.app.FragmentActivity;
进口android.support.v4.app.FragmentManager;
进口android.support.v4.app.FragmentPagerAdapter;
进口android.support.v4.view.ViewPager;公共类MainActivity扩展FragmentActivity { ViewPager viewPager = NULL; @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
viewPager =(ViewPager)findViewById(R.id.pager);
FragmentManager fragmentManager = getSupportFragmentManager();
viewPager.setAdapter(新MyAdapter(fragmentManager));
} @覆盖
公共无效onConfigurationChanged(配置NEWCONFIG){
super.onConfigurationChanged(NEWCONFIG);
}}类MyAdapter扩展FragmentPagerAdapter {
公共MyAdapter(FragmentManager FM){
超(FM); // TODO自动生成构造函数存根
} @覆盖
公共片段的getItem(int i)以{
片段片段= NULL;
如果(我== 0)=片段介绍新();
如果(我== 1)片段=新球馆();
如果(我== 2)片段=新游戏();
如果(我== 3)=片段新型机器人();
如果(我== 4)片段=新的赛会();
如果(我== 5)片段=新词汇表();
返回片段;
} @覆盖
公众诠释的getCount(){
// TODO自动生成方法存根
返回6;
} 公共CharSequence的getPageTitle(INT位置){
字符串title =新的String();
如果(位置== 0)返回摘要;
如果(位置== 1)回归竞技场;
如果(位置== 2)回报比赛;
如果(位置== 3)回归机器人;
如果(位置== 4)回归的对抗赛;
如果(位置== 5)返回词汇表;
返回null;
}
}
通话<一个href=\"http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit%28int%29\">setOffscreenPageLimit比一半的片段更高一些。
这将迫使viewpager创建和保存所有创建的片段,你在你的适配器有。
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
viewPager =(ViewPager)findViewById(R.id.pager);
//用一些高于一半的片段。
viewPager.setOffscreenPageLimit(4);
FragmentManager fragmentManager = getSupportFragmentManager();
viewPager.setAdapter(新MyAdapter(fragmentManager));
}
I have an app that uses fragments to create a page adapter. I use this to create a swipe tab which loads a different fragment. Each fragment loads webview which displays a specially formatted website. Right now my app only loads the fragments it is on and the ones to the left and right of it. I would like to load all six tabs at once and never again. Is there a way to do this?
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;
}
}
call setOffscreenPageLimit with a number higher than half your fragments. This will force the viewpager to create and keep all of the fragments created as you have in your adapter.
@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));
}
这篇关于在加载应用程序打开的所有片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!