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) 
+1

getCount 반환 값을 2로 변경하십시오. – AabidMulani

답변

4

귀하의 getCount() 반환 3 만 getItem() 반환 인덱스 0과 1에 대한 null이 아닌 경우에만. 카운트를 2로 변경하거나 getItem()이 3 개의 항목을 반환하도록하십시오.

관련 문제