Android 延迟选项卡片段创建
我正在执行以下选项卡:Android 延迟选项卡片段创建,android,tabs,android-actionbar,Android,Tabs,Android Actionbar,我正在执行以下选项卡: public class SectionsPagerAdapter extends FragmentPagerAdapter { @Override public Fragment getItem(int position) { Fragment fragment = null; switch (position) { case 0: { fragment = ne
public class SectionsPagerAdapter extends FragmentPagerAdapter {
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position) {
case 0: {
fragment = new Fragment1();
break;
}
case 1: {
fragment = new Fragment2();
break;
}
}
return fragment;
}
@Override
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return "Fragment1";
case 1:
return "Fragment2";
}
return null;
}
}
活动:
public class MainActivity extends FragmentActivity implements ActionBar.TabListener {
SectionsPagerAdapter mSectionsPagerAdapter;
/**
* The {@link ViewPager} that will host the section contents.
*/
ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
// Set up the action bar.
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
// When swiping between different sections, select the corresponding
// tab. We can also use ActionBar.Tab#select() to do this if we have
// a reference to the Tab.
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
// For each of the sections in the app, add a tab to the action bar.
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
Tab tab = actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(i));
tab.setTabListener(this);
actionBar.addTab(tab, i == 0); // Select first tab
}
public类MainActivity扩展FragmentActivity实现ActionBar.TabListener{
分段SPAGERADAPTER mSectionsPagerAdapter;
/**
*将承载节内容的{@link ViewPager}。
*/
ViewPager mViewPager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局、主布局);
//设置操作栏。
最终ActionBar ActionBar=getActionBar();
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡);
mSectionsPagerAdapter=newsectionspageradapter(getSupportFragmentManager());
//使用分区适配器设置ViewPager。
mViewPager=(ViewPager)findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
//在不同区段之间滑动时,选择相应的
//我们也可以使用ActionBar.tab#select()来完成这项工作
//对选项卡的引用。
mViewPager.setOnPageChangeListener(新的ViewPager.SimpleOnPageChangeListener(){
@凌驾
已选择页面上的公共无效(内部位置){
actionBar.setSelectedNavigationItem(位置);
}
});
//对于应用程序中的每个部分,在操作栏中添加一个选项卡。
对于(int i=0;i
我发现每个视图都是预先创建的,即视图是在选择其选项卡之前创建的。有没有办法延迟创建尚未选择的选项卡?如果您只想延迟创建选项卡,请尝试以下方法:
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position) {
case 0: {
// 3000 = SECONDS DELAY
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {}
public void onFinish() {
// INFLATE VIEW HERE
fragment = new Fragment1();
}
}.start();
break;
}
case 1: {
// 3000 = SECONDS DELAY
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {}
public void onFinish() {
// INFLATE VIEW HERE
fragment = new Fragment2();
}
}.start();
break;
}
}
return fragment;
}
我不知道这是否是您正在寻找的,但我希望它能帮助您:)谢谢您的回复!抱歉,我现在意识到我的问题可能有点困惑。我正在寻找一种方法,将片段创建延迟到单击选项卡时,而不是基于时间。即如果我有5个选项卡,我可以在初始加载时间保存,因为我只创建了第一个选项卡最初,因为这是显示的唯一选项卡。