1

에서 조각을 업데이트 한 후 내가 사용하여 내 조각 번호 2를 통해 업데이트 : 내가 추가하고 추가 및 getItem(int position)에서 Fragment 다른 모든 것이 잘 작동하는 것 같다CastException : ViewPager

이제
@Override 
public int getItemPosition(Object object) { 
    FragmentPage2 f = (FragmentPage2) object; 
    if (f != null) { 
     f.update(); 
    } 
    return super.getItemPosition(object); 
} 

. 내가 mPager.getAdapter().notifyDataSetChanged();을 실행할 때, 그것은 나를 던졌습니다 : 무슨 일

08-07 19:45:50.844: E/AndroidRuntime(17776): java.lang.ClassCastException: com.foodbuilder.FragmentPage1 cannot be cast to com.foodbuilder.FragmentPage2 
08-07 19:45:50.844: E/AndroidRuntime(17776): at com.foodbuilder.MainActivity$MyAdapter.getItemPosition(MainActivity.java:967) 
08-07 19:45:50.844: E/AndroidRuntime(17776): at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:851) 
08-07 19:45:50.844: E/AndroidRuntime(17776): at android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2772) 
08-07 19:45:50.844: E/AndroidRuntime(17776): at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37) 
08-07 19:45:50.844: E/AndroidRuntime(17776): at android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276) 
08-07 19:45:50.844: E/AndroidRuntime(17776): at com.foodbuilder.MainActivity.onDialogPositiveClick(MainActivity.java:888) 
08-07 19:45:50.844: E/AndroidRuntime(17776): at com.foodbuilder.TablesDialogFragment$2.onClick(TablesDialogFragment.java:57) 
08-07 19:45:50.844: E/AndroidRuntime(17776): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166) 
` 

? 고맙습니다. 당신이 FragmentgetItemPosition()이 유형에 대해 상관하지 않는다 상속하는 다른 클래스를 가지고 있기 때문에

if(object.getClass().isAssignalbeFrom(FragmentPage2.class))

이 발생 : 그것은 FragmentPage2.class에서 할당 할 경우

답변

1
@Override 
public int getItemPosition(Object object) { 
    if(object != null && object instanceof FragmentPage2){ 
     FragmentPage2 f = (FragmentPage2) object; 
     f.update();   
    } 
    return super.getItemPosition(object); 
} 

마찬가지로 당신은 객체 클래스를 얻을 확인할 수 있습니다 객체이지만, 캐스팅은 객체의 유형에주의를 기울입니다.

희망이 있습니다.

+2

너, 너를 사랑해. –