2017-08-11 48 views
3

我已經看到了我的問題的相對帖子,但它不能解決我的問題。 我試圖用3片段獲得滑動視圖。 在主片段,我有這樣的:FragmentStatePagerAdapter沒有調用getItem()

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View vue = inflater.inflate(R.layout.fragment_conversions, container, false); 

    ConversionsPagerAdapter cPageAdapter = new ConversionsPagerAdapter(getActivity().getSupportFragmentManager()); 
    ViewPager vp = vue.findViewById(R.id.conversionsPager); 
    cPageAdapter.getItem(0); 
    vp.setAdapter(cPageAdapter); 


    Button convKmhKts = (Button) vue.findViewById(R.id.convKmhKts); 
    convKmhKts.setText("..."); 
... 

這裏是類我FragmentStatePagerAdapter的:

public class ConversionsPagerAdapter extends FragmentStatePagerAdapter{ 
    public ConversionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
     Log.i("ARKA", "FragmentStatePagerAdapter CONSTRUCTOR"); 
    } 

    @Override 
    public Fragment getItem(int i) { 
     return ConversionFragment.newInstance(i); 
    } 

    @Override 
    public int getCount() { 
     return 1; 
    } 
} 

而且finnaly其顯示的標籤中的片段:

public class ConversionFragment extends Fragment { 
    public static final String ID_CONVERSION = "id_conversion"; 

    public static ConversionFragment newInstance(int pos) { 
     ConversionFragment stf = new ConversionFragment(); 
     Bundle args = new Bundle(); 
     args.putInt("pos", pos); 
     stf.setArguments(args); 
     return stf; 
    } 


    public ConversionFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, 
          ViewGroup container, Bundle savedInstanceState) { 
     // The last two arguments ensure LayoutParams are inflated 
     // properly. 

     Bundle args = getArguments(); 
     int idConversion = args.getInt(ID_CONVERSION); 
     Log.i("idConversion", String.valueOf(idConversion)); 
     int idVue; 

     switch (idConversion){ 
      case 0: idVue = R.layout.fragment_conversions_vitesse; 
       break; 
      case 1: idVue = R.layout.fragment_conversions_vitesse; 
      default: idVue = R.layout.fragment_conversions_vitesse; 
       break; 
     } 

     View rootView = inflater.inflate(idVue, null); 
     return rootView; 
    } 
} 

事實是,getItem()永遠不會被調用。 我嘗試getChildFragmentManager()來改變getActivity()getSupportFragmentManager(),但似乎這不是好辦法... 當我試圖進入電影我的按鈕,我得到這個:

的java.lang。的NullPointerException:嘗試上的空對象引用

在行調用虛擬方法「無效android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)」,其中我使用的按鈕。

回答

0

你做錯了

cPageAdapter.getItem(0); 
vp.setAdapter(cPageAdapter); 

設置適配器先查看傳呼機,然後嘗試調用get item方法。

vp.setAdapter(cPageAdapter); 
cPageAdapter.getItem(0); 
+0

嗨,謝謝你的回答,它只是爲了一個測試,我忘了重新這一行,但我會嘗試你的idera。 –

+0

我嘗試過,但我仍然是nullpointerexception ... –

0

如果使用ViewPager內片段你有使用chield片段經理這麼嘗試用getChildFragmentManager()取代getActivity().getSupportFragmentManager()。如果你爲所有東西使用一個片段管理器,它會給你帶來一些錯誤。

For more information

+0

感謝您的回答。我試着嘗試一下,我有同樣的問題:與ChildManager的空指針異常... –

0

好, 的probleme是,我試圖存取權限未充氣組件:

convKmhKts.setText("..."); 

我查看在它的子片段,現在是確定....

相關問題