I’m trying to send some extras to the next activity, but it simply does not work and I dont understand why. I’m populating a map with overlays and when clicked I try to send the ID of the overlay item to a new activity I get 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;
}
Here Log.e outputs the id of the item that’s clicked. Example 29.
But in my next activity I try to open the Log.e, but it shows the value 0 and that’s why I get the CursorIndexOutOfBounds. But why isn’t it picking up the value 29?
// get the selected contact's row ID
Bundle extras = getIntent().getExtras();
rowID = extras.getLong(MyOverlays.ROW_ID);
Log.e("ViewContactFromMap", "rowID is: " + rowID);
Even if I hardcode and set the ROW_ID to 29, I still get the value of 0 in my next activity
After the help I got from these people below, I got it to work with this:
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);
In your
.putExtra(), you are putting the String “ROW_ID”. Thus, you need to grab the data from the String “ROW_ID” in your next activity ingetExtras().Note that your variable
ROW_ID‘s value is “row_id”, but you are placing the value into “ROW_ID”. Try using all uppercase or all lowercase – these things are case sensitive.Explanation: you are storing a variable using
.putExtra()into the tag “ROW_ID”. Then, in the other activity, you are trying to grab the value using.getLong()from the variableROW_ID, whose value is “row_id”. Do you see the problem now? Value stored as “ROW_ID”, trying to receive it as “row_id”… these tags are not the same. As a result,.getLong()cannot find the value and thus just makes it 0.Short answer: change your variable to
public static String ROW_ID = "ROW_ID";and ensure that the variable you are really trying to get is a long. If you’re storing an integer, use.getInt()instead, or.getString()for a String.