私のアプリケーションでは、ViewPager 内にマップ ビューを実装しようとしています。アプリケーションには 4 つの異なるページがあります。MapView は 4 ページ目にあります。マップは正常にロードされましたが、スワイプして最初のページに戻ると、destroyItem() メソッドを使用して 4 番目のビューを破棄する必要があります。4 ページ目にスワイプすると、3 ページ目からクラッシュし、logcat にエラーが表示されます。
05-10 13:14:50.152: E/AndroidRuntime(620): java.lang.IllegalStateException: You are only allowed to have a single MapView in a MapActivity
MapActivity に単一のマップビューしかないことを認識しています。しかし、私はそれを解決することができません - 誰かが私を助けることができますか?
コードは以下のとおりです。
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
context = collection.getContext();
int resId = 0;
int flag = resId;
switch (position) {
case 0:
resId = R.layout.farleft; // first
view = inflater.inflate(resId, null);
break;
case 1:
resId = R.layout.left; // second
view = inflater.inflate(resId, null);
break;
case 2:
resId = R.layout.right; // third
view = inflater.inflate(resId, null);
break;
case 3:
resId = R.layout.mylocator;
view = inflater.inflate(resId, null);
break;
}
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
Log.d("destroyItem", "" + arg2);
}