0

私の問題は、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);
}
4

1 に答える 1

1

キャストを変更します-removeView には LinearLayout は必要ありません。View だけが必要です。また、LinearLayout と RelativeLayout の両方が View から派生しています。

于 2013-07-08T15:03:00.087 に答える