2014-03-26 58 views
0

我实现标签:延迟片片断创建

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 
    } 

什么我发现是,每个视图中创建了前面,即在创建视图之前它的标签是选择。有没有办法延迟创建未被选中的标签页?

回答

0

,如果你只是想拖延标签的创建试试这个:

@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; 
} 

我不知道这是什么youre寻找,但我希望它会帮助你:)

+0

感谢您的答复!对不起,我现在意识到我的问题可能一直令人困惑。我一直在寻找一种方法来延迟片段创建,直到单击此选项卡,而不是基于时间。 IE浏览器,如果我有5个选项卡,我可以节省初始加载时间,因为我只是最初创建第一个选项卡,因为这是唯一显示的选项卡。 – lostintranslation