Android putExtra不';Don’不要派多余的人
我正试图为下一个活动发送一些额外的信息,但它根本不起作用,我不明白为什么。我正在用覆盖图填充地图,当单击时,我尝试将覆盖项的ID发送到一个新活动,我会得到CursorIndexOutOfBoundsAndroid putExtra不';Don’不要派多余的人,android,Android,我正试图为下一个活动发送一些额外的信息,但它根本不起作用,我不明白为什么。我正在用覆盖图填充地图,当单击时,我尝试将覆盖项的ID发送到一个新活动,我会得到CursorIndexOutOfBounds public static String ROW_ID = "row_id"; // Intent extra key protected boolean onTap(int index) { // TODO Auto-generated method stub // ret
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。但是为什么它没有提高价值呢
// 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);
删除行ID
intent.putExtra(行ID,overlayItemList.get(index.getTitle())周围的引号代码>
或
更改ROW\u ID公共静态字符串ROW\u ID=“ROW\u ID”的大小写代码>
编辑:
还要确保您的类型相同getTitle
实际上可能是一个字符串
。在这种情况下,getString(MyOverlays.ROW_ID)
可能就是您要查找的内容。删除ROW_IDintent.putExtra(ROW_ID,overlayItemList.get(index.getTitle())周围的引号代码>
或
更改ROW\u ID公共静态字符串ROW\u ID=“ROW\u ID”的大小写代码>
编辑:
还要确保您的类型相同getTitle
实际上可能是一个字符串
。在这种情况下,getString(MyOverlays.ROW\u ID)
可能就是您要查找的内容。在.putExtra()
中,您要放置字符串“ROW\u ID”。因此,您需要在getExtras()
中的下一个活动中从字符串“ROW\u ID”中获取数据
请注意,变量ROW\u ID
的值是“ROW\u ID”,但您将该值放入“ROW\u ID”。尝试使用全大写或全小写-这些都是区分大小写的
说明:您正在使用.putExtra()
将变量存储到标记“ROW\u ID”中。然后,在另一个活动中,您尝试使用变量ROW\u ID
获取值,该变量的值为“ROW\u ID”。你现在看到问题了吗?值存储为“ROW_ID”,试图将其作为“ROW_ID”接收。。。这些标签不一样。因此,.getLong()
无法找到该值,因此将其设为0
简短回答:将变量更改为公共静态字符串ROW\u ID=“ROW\u ID”
并确保您真正尝试获取的变量是一个长变量。如果存储的是整数,请改用.getInt()
,或使用.getString()
作为字符串。在.putExtra()
中,将字符串“ROW\u ID”放入。因此,您需要在getExtras()
中的下一个活动中从字符串“ROW\u ID”中获取数据
public static String ROW_ID = "row_id"; // Intent extra key
private Context c;
protected boolean onTap(int index) {
Intent intent = new Intent(c, ViewContactFromMap.class);
intent.putExtra(ROW_ID, overlayItemList.get(index).getTitle());
c.startActivity(intent);
}
// get the selected contact's row ID
Bundle extras = getIntent().getExtras();
rowID = extras.getLong(MyOverlays.ROW_ID);
Log.e("ViewContactFromMap", "rowID is: " + rowID);
请注意,变量ROW\u ID
的值是“ROW\u ID”,但您将该值放入“ROW\u ID”。尝试使用全大写或全小写-这些都是区分大小写的
说明:您正在使用.putExtra()
将变量存储到标记“ROW\u ID”中。然后,在另一个活动中,您尝试使用变量ROW\u ID
获取值,该变量的值为“ROW\u ID”。你现在看到问题了吗?值存储为“ROW_ID”,试图将其作为“ROW_ID”接收。。。这些标签不一样。因此,.getLong()
无法找到该值,因此将其设为0
简短回答:将变量更改为公共静态字符串ROW\u ID=“ROW\u ID”
并确保您真正尝试获取的变量是一个长变量。如果存储的是整数,请改用.getInt()
或.getString()
作为字符串。overlayItemList.get(index.getTitle());可能正在返回字符串,并且您正在使用
public static String ROW_ID = "row_id"; // Intent extra key
private Context c;
protected boolean onTap(int index) {
Intent intent = new Intent(c, ViewContactFromMap.class);
intent.putExtra(ROW_ID, overlayItemList.get(index).getTitle());
c.startActivity(intent);
}
// get the selected contact's row ID
Bundle extras = getIntent().getExtras();
rowID = extras.getLong(MyOverlays.ROW_ID);
Log.e("ViewContactFromMap", "rowID is: " + rowID);
rowID = extras.getLong(MyOverlays.ROW_ID);
我不确定,但请尝试以下方法
rowID = extras.getStringExtra(MyOverlays.ROW_ID);
overlayItemList.get(index.getTitle());可能正在返回字符串,并且您正在使用
rowID = extras.getLong(MyOverlays.ROW_ID);
我不确定,但请尝试以下方法
rowID = extras.getStringExtra(MyOverlays.ROW_ID);
Intent in=新的Intent(这个,XXX.class)代码>
in.putExtra(“testExtra”、“TestData”)代码>
startActivity(in)代码>
同样的问题也发生在我身上。我通过添加以下内容解决了这个问题:
Intent in=新的Intent(这个,XXX.class)代码>
in.addFlags(Intent.FLAG\u ACTIVITY\u NEW\u TASK)代码>
in.addFlags(Intent.FLAG\u ACTIVITY\u SINGLE\u TOP)代码>
in.putExtra(“testExtra”、“TestData”)代码>
startActivity(in)代码>Intent in=newintent(这个,XXX.class)代码>
in.putExtra(“testExtra”、“TestData”)代码>
startActivity(in)代码>
同样的问题也发生在我身上。我通过添加以下内容解决了这个问题:
Intent in=新的Intent(这个,XXX.class)代码>
in.addFlags(Intent.FLAG\u ACTIVITY\u NEW\u TASK)代码>
in.addFlags(Intent.FLAG\u ACTIVITY\u SINGLE\u TOP)代码>
in.putExtra(“testExtra”、“TestData”)代码>
startActivity(in)代码>MyOverlays.ROW\u ID的值是多少?嗯。这实际上给出了正确的值。我试着解决这个问题:)好吧,你可能不应该使用静态在活动之间传输数据,我更想的是,既然你用键“ROW\u ID”设置值,你还需要用键“ROW\u ID”设置长时间。请参阅下面的@MikeGates答案。MyOverlays.ROW_ID的值是多少?嗯。这实际上给出了正确的值。我试着解决这个问题:)好吧,你可能不应该使用静态在活动之间传输数据,我更想的是,既然你用键“ROW\u ID”设置值,你还需要用键“ROW\u ID”设置长时间。请参阅下面的@MikeGates答案。这只会将键“29”设置为值“29”,请注意,代码中的行ID已更改。putExtra
采用键/值对。问题是