内片段ViewPager导致NullPointerException异常
我试图使用ViewPager
一个Fragment
内得到内片段ViewPager导致NullPointerException异常
03-01 15:23:05.375 3937-3937/com.example.android.navigationdrawerexample E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.android.navigationdrawerexample.SpaFragment.onCreateView(SpaFragment.java:50)
at android.app.Fragment.performCreateView(Fragment.java:1695)
代码:
public class SpaFragment extends Fragment {
public SpaFragment(){}
private SpaList mSpa;
private TabHost tabs;
private FragmentActivity mFragmentActivity;
private View rootView;
public void setSpa(SpaList s)
{
mSpa=s;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_spa, container, false);
ViewPager pager = (ViewPager) rootView.findViewById(R.id.pager);
pager.setAdapter(new MyPagerAdapter(mFragmentActivity.getSupportFragmentManager()));
return rootView;
}
@Override
public void onAttach(Activity activity) {
mFragmentActivity = (FragmentActivity) activity;
Log.d("ACTIVITY on attach"+mFragmentActivity,"\n");
super.onAttach(activity);
}
private class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return "Title " + position;
}
@Override
public android.support.v4.app.Fragment getItem(int pos) {
switch(pos) {
case 0: return FirstFragment.newInstance("FirstFragment, Instance 1");
case 1: return SecondFragment.newInstance("SecondFragment, Instance 1");
default: return FirstFragment.newInstance("ThirdFragment, Default");
}
}
@Override
public int getCount() {
return 2;
}
}
}
您正在运行到一个NullPointerException
因为你是上调用的方法当时为NULL的对象。
这可能是因为你的
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// ...
}
方法是之前叫你
@Override
public void onAttach(Activity activity) { }
方法,因此,你的变量mFragmentActivity
是NULL。在这种情况下,你的代码
String.valueOf(mFragmentActivity);
将抛出一个NullPointerException
。
@PJ这就是读音字讲起有关。 –
我删除了Log.d,仍然得到相同的错误。我如何将ref传给Activity之前的onCreateView? – SERG
您还需要去掉这一行:pager.setAdapter(新MyPagerAdapter(mFragmentActivity.getSupportFragmentManager())); 只需在您的onCreateView()方法内调用getActivity()。 –
删除'Log.d( “上创建活动”,将String.valueOf(mFragmentActivity));' –
我们需要您的logcat的输出。 –
我删除Log.d,仍然得到同样的错误 – SERG