次のアクティビティにエキストラを送ろうとしていますが、うまくいきません。理由がわかりません。マップにオーバーレイを設定しています。クリックすると、オーバーレイ アイテムの ID を新しいアクティビティに送信しようとすると、CursorIndexOutOfBounds が取得されます。
public static String ROW_ID = "row_id"; // Intent extra key
protected boolean onTap(int index) {
// TODO Auto-generated method stub
// return super.onTap(index);
ROW_ID = overlayItemList.get(index).getTitle();
Intent intent = new Intent(context, ViewContactFromMap.class);
intent.putExtra("ROW_ID", overlayItemList.get(index).getTitle());
Log.e("putExtra", "ROW_ID is " + ROW_ID);
context.startActivity(intent);
return true;
}
ここで Log.e は、クリックされた項目の ID を出力します。例 29。
しかし、次のアクティビティで Log.e を開こうとしましたが、値が 0 であり、それが CursorIndexOutOfBounds を取得する理由です。しかし、値が 29 にならないのはなぜでしょうか?
// get the selected contact's row ID
Bundle extras = getIntent().getExtras();
rowID = extras.getLong(MyOverlays.ROW_ID);
Log.e("ViewContactFromMap", "rowID is: " + rowID);
ハードコーディングして ROW_ID を 29 に設定しても、次のアクティビティで値 0 を取得します。
以下の人々から助けを得た後、これで動作するようになりました。
ROW_ID = overlayItemList.get(index).getTitle();
Intent intent = new Intent(context, ViewContactFromMap.class);
intent.putExtra("ROW_ID", overlayItemList.get(index).getTitle());
Log.e("putExtra", "ROW_ID is " + ROW_ID);
context.startActivity(intent);
// get the selected contact's row ID
Bundle extras = getIntent().getExtras();
rowIDs = extras.getString("ROW_ID");
rowID = Long.parseLong(rowIDs);
Log.e("ViewContactFromMap", "rowID is: " + rowID);