2015-08-21 78 views
2

我有創造的片段這樣的適配器:片段實例,onCreate方法不調用

public class FooAdapter<T extends Fragment> extends FragmentPagerAdapter { 
    private Class<T> c; 
    public FooAdapter(FragmentManager fm,Class<T> c) { 
     super(fm); 
     this.c = c; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     try { 
     T fragment = c.newInstance(); 
     return fragment; 
     } catch (InstantiationException e) { 
     e.printStackTrace(); 
     } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
     } 
     return null; 
    } 
} 

適配器的實例:

new FooAdapter<BarFragment>(getSupportFragmentManager(),BarFragment.class) 

我把日誌中的onCreate(和onAttach,onCreateView)的BarFragment,但沒有記錄!

public class BarFragment extends Fragment{ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.d(TAG, "on create view"); 
    } 
} 
+0

您是否將適配器分配給viewpager? – zec

+0

@zec是我已分配。 –

+0

'getItem()'和'getCount()'都需要被覆蓋。那麼你打算每個片段只有一個適配器/ viewpager? – zec

回答

0

對於初學者,您的onCreate方法是錯誤的,您應該使用onCreateView方法並忘記onCreate。

事情是這樣的:

public class BarFragment extends Fragment{ 

    public BarFragment(){ 

    } 

    @Override 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(LAYOUT YOU WANT TO INFLATE, container, false); 

     return rootView; 
    } 
} 

I'l期待更深入地進入你的適配器代碼現在。

+0

大聲笑它沒有錯,因爲他們只是一個日誌聲明,我敢肯定,這只是一個代碼片段。 – zec

+0

如果BarFragment擴展了FragmentActivity,那將是正確的方法。因爲它擴展了Fragment,所以你應該使用onCreateView方法。資料來源:http://developer.android.com/training/basics/fragments/creating.html – user3641702

+0

那裏你去朋友 - http://developer.android.com/guide/components/fragments.html#Lifecycle – zec

相關問題