2013-11-03 31 views
0

我正在做一個3片段可滾動的應用程序,左邊的片段是片段1,片段2是在中心,而片段3是在右邊。我想Fragment2(中心)是第一個加載,我用mViewPager.setCurrentItem(1); 但是,當我啓動的應用程序,我在日誌中得到這個。Android片段奇怪的加載

  onStart Fragment1 
      onResume Fragment1 
      onStart Fragment3 

它的onPause當我去Fragment3(右)。當我去Fragment2(中心)時,我想暫停,因爲我在Fragment3上得到了主要的可執行錯誤。

這是一個MainActivity類別

 public class MainActivity extends FragmentActivity { 


    SectionsPagerAdapter mSectionsPagerAdapter; 
    ViewPager mViewPager; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 
     mViewPager = (ViewPager) findViewById(R.id.pager); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 
     mViewPager.setCurrentItem(1); 


    } 


    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

     public SectionsPagerAdapter(android.support.v4.app.FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      Fragment fragment = new Fragment(); 
      switch (position) { 
      case 0: 
       return fragment = new Fragment1(); 
      case 1: 
       return fragment = new Fragment2(); 
      case 2: 
       return fragment = new Fragment3(); 
      default: 
       break; 

      } 
      return fragment; 
     } 


     @Override 
     public int getCount() { 

      return 3; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      Locale l = Locale.getDefault(); 
      switch (position) { 
      case 0: 
       return getString(R.string.one).toUpperCase(l); 
      case 1: 
       return getString(R.string.two).toUpperCase(l); 
      case 2: 
       return getString(R.string.third).toUpperCase(l); 
      } 
      return null; 
     } 
    } 

    } 

我是新來的Android,我不知道如何解決這個問題,任何回答將幫助。謝謝

回答

0

您正在使用FragmentPagerAdapter,機器人通過默認加載​​的背景下一個和以前的片段,爲了有效地加載片段和刪除滯後。

但是,他們提供了一個API來定製相同的,你可能想調整它以獲得更好的性能。

setOffscreenPageLimit(INT限制),用來設置你想在後臺加載額外的碎片的數量。默認情況下,它設置爲1

http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)

現在你不能進一步降低它,因爲每它的設計。這意味着ViewPager要求您在當前頁面中至少加載一頁(在兩者之前和之後)。

嘗試把

mViewPager.setOffscreenPageLimit(0),它會顯示以下警告: 「請求屏幕外的頁數限制0太小;默認爲1」

我希望這有助於。

+0

我做了mViewPager.setOffscreenPageLimit(0)和1,但沒有幫助我,和以前一樣,你有什麼建議嗎?因爲fragment1和fragment3是json http對象,並且在刷應用程序崩潰時。 –