-1
我目前正在測試Android中的viewpager。創建了一個自定義適配器,但當我嘗試滑動viewpager時出現此錯誤。任何人都可以幫助我嗎?ViewPager removeView()第一個孩子的父母
public class ViewPagerAdapter extends PagerAdapter {
Context context;
int[] flag;
LayoutInflater inflater;
public ViewPagerAdapter(Context context, int[] flag) {
this.context = context;
this.flag = flag;
}
@Override
public int getCount() {
return flag.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imgflag;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.viewpager_item, container, false);
//ImageView imageView = new ImageView(context);
//imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
//imageView.findViewById(R.id.flag);
imgflag = (ImageView) itemView.findViewById(R.id.flag);
imgflag.setImageResource(flag[position]);
((ViewPager) container).addView(imgflag);
return imgflag;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
的logcat:
05-02 10:35:26.926: E/AndroidRuntime(4939): FATAL EXCEPTION: main
05-02 10:35:26.926: E/AndroidRuntime(4939): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
編輯建議的理查德:
public class ViewPagerAdapter extends PagerAdapter {
Context context;
int[] flag;
LayoutInflater inflater;
ImageView imgflag;
View itemView;
public ViewPagerAdapter(Context context, int[] flag) {
this.context = context;
this.flag = flag;
}
@Override
public int getCount() {
return flag.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
itemView = inflater.inflate(R.layout.viewpager_item, container, false);
//ImageView imageView = new ImageView(context);
//imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
//imageView.findViewById(R.id.flag);
imgflag = (ImageView) itemView.findViewById(R.id.flag);
imgflag.setImageResource(flag[position]);
((ViewPager) container).addView(itemView);
//return imgflag;
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//((ViewPager) container).removeView((ImageView) object);
((ViewPager) container).removeView(itemView);
//((ViewGroup)imgflag.getParent()).removeView(imgflag);
}
}
的logcat:
05-02 10:55:42.786: E/AndroidRuntime(7763): FATAL EXCEPTION: main
05-02 10:55:42.786: E/AndroidRuntime(7763): java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.ImageView
請檢查我的編輯。我仍然無法理解理查德。 :( – 2013-05-02 02:56:46
您仍然將imgFlag添加到viewPager,而不是添加itemView。 – richardwiden 2013-05-02 03:28:42
您能告訴我現在我該做什麼嗎?謝謝 – 2013-05-02 03:46:27