私の問題は、destroyItem が呼び出されると現在 LinearLayouts が破棄されることですが、私の instantiateItem メソッドは相対レイアウトと線形レイアウトの両方をインスタンス化します。したがって、 destroyItem が呼び出されると、相対レイアウトを線形レイアウトにキャストできないという例外が発生します。(linearlayout のオブジェクトインスタンス) がその種類を破棄するかどうかなどを試しました...
@Override
public Object instantiateItem(View collection, int position) {
RelativeLayout wholeView = new RelativeLayout(collection.getContext());
// images view
RelativeLayout images = new RelativeLayout(collection.getContext());
for (int i = 0; i < 2; i++) {
ImageView image = new ImageView(collection.getContext());
image.setPadding(0, 0, 0, 0);
images.addView(image);
image.setImageResource(GalImages[i]);
if (i==1) {
image.setScaleType(ImageView.ScaleType.FIT_END);
}
}
// text labels view
LinearLayout textLabels = new LinearLayout(collection.getContext());
textLabels.setOrientation(LinearLayout.VERTICAL);
TextView activityDescription = new TextView(collection.getContext());
activityDescription.setText("Warm-up");
activityDescription.setPadding(200, 200, 0, 0);
activityDescription.setTextSize(30);
textLabels.addView(activityDescription);
TextView timeLeftForThisActivity = new TextView(collection.getContext());
timeLeftForThisActivity.setText("00:00");
timeLeftForThisActivity.setPadding(200, 0, 0, 0);
timeLeftForThisActivity.setTextSize(60);
textLabels.addView(timeLeftForThisActivity);
TextView elapsedTimeStatic = new TextView(collection.getContext());
elapsedTimeStatic.setText("Elapsed Time: ");
elapsedTimeStatic.setPadding(200, 0, 0, 0);
elapsedTimeStatic.setTextSize(20);
textLabels.addView(elapsedTimeStatic);
// adding images and text to overall view
wholeView.addView(images);
wholeView.addView(textLabels);
((ViewPager) collection).addView(wholeView, 0);
return wholeView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((LinearLayout) object);
}