2017-08-11 125 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("..."); 

我查看在它的子片段,现在是确定....

相关问题