0
ViewPager
의 작동 방법을 배우기 위해 튜토리얼을 진행했습니다. 그리고 앱을 실행할 때 아무런 문제가 없습니다. 그러나 Pager
의 두 번째 페이지로 스 와이프하면 앱이 다운되고 Logcat
은 아래 오류를 생성합니다. 코드를보고 뭔가를 놓친 경우 알려주십시오.ViewPager를 탐색 할 때 NPE
ViewPager_Activity :
public class ViewPager00 extends FragmentActivity {
private MyAdapter mAdapter;
private ViewPager mPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAdapter = new MyAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
}
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int position) {
// TODO Auto-generated method stub
switch (position) {
case 0:
return new DetailFragment();
case 1:
return new ImageFragment();
default:
return null;
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 3;
}
}
}
Details_Fragment :
public class DetailFragment extends Fragment {
private static final String TAG = "DetailFragment";
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.e(TAG, "@onCreate(): Hello");
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.details,container, false);
TextView textview = (TextView) view.findViewById(R.id.detailsText);
textview.setText("Testing");
return view;
}
}
Image_Fragment :
public class ImageFragment extends Fragment {
private static final String TAG = "ImageFragment";
//private final int imageResourceId;
//public ImageFragment() {}
/*public ImageFragment(int imageResourceId) {
this.imageResourceId = imageResourceId;
}*/
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.e(TAG, "@onCreate(): Hello");
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.image,container, false);
ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
//imageView.getResources().getDrawable(R.drawable.ic_launcher);
return view;
}
,174,
}
로그 캣 :
06-23 12:45:32.995: E/AndroidRuntime(856): FATAL EXCEPTION: main
06-23 12:45:32.995: E/AndroidRuntime(856): Process: com.example.viewpager00, PID: 856
06-23 12:45:32.995: E/AndroidRuntime(856): java.lang.NullPointerException
06-23 12:45:32.995: E/AndroidRuntime(856): at
android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:394)
06-23 12:45:32.995: E/AndroidRuntime(856): at
android.support.v4.app.BackStackRecord.add(BackStackRecord.java:389)
06-23 12:45:32.995: E/AndroidRuntime(856): at
android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:99)
06-23 12:45:32.995: E/AndroidRuntime(856): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:832)
06-23 12:45:32.995: E/AndroidRuntime(856): at android.support.v4.view.ViewPager.populate(ViewPager.java:1048)
06-23 12:45:32.995: E/AndroidRuntime(856): at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
06-23 12:45:32.995: E/AndroidRuntime(856): at android.support.v4.view.ViewPager$3.run(ViewPager.java:244)
06-23 12:45:32.995: E/AndroidRuntime(856): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803)
getCount 반환 값을 2로 변경하십시오. – AabidMulani