所以我试图在选择列表中的项目之后启动一个新活动....基于我读过的内容非常基本。我也试图在额外内容中发送一个值。所以我可以在列表中选择项目,新活动开始,额外设置,但附加项中的值为空。我注意到新活动的意图ID与第一个活动的意图不匹配。我不知道是否应该这样做。
来自活动1:
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent displayIntent = new Intent(getApplicationContext(), DisplayActivity.class);
int index = _names.indexOf(((TextView) view).getText());
displayIntent.putExtra("ID_TAG", ids.get(index));
startActivity(displayIntent);
}
在Activity2(DisplayActivity)
中protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
_hiveIndex = extras.getLong("ID_TAG");
}
任何想法为什么我不会得到价值? extras下的mMap在第一个intent中设置为哈希映射,但在activity2中为null。
答案 0 :(得分:2)
displayIntent.putExtra(“ID_TAG”,ids.get(index))Activity1没有使用Bundle对象,要放置Bundle对象需要使用putExtras(Bundle bundle)方法而不是它。因为你试图得到在Actvitiy2中捆绑对象。您在Activity1 putExtra方法中传递除Bundle对象以外的其他对象,但是您试图在Activity2中获取Bundle对象,因此您什么也得不到。 displayIntent.putExtra(“ID_TAG”,ids.get(index));替换为 displayIntent.putExtras(您的捆绑对象) ;
或者您可以使用getIntExtra(String name, int defaultValue)
方法。
答案 1 :(得分:0)
在Activity1中存储一个Integer。在Activity2中,您尝试检索Long。您需要在Activity2中使用getInteger或在Activity1中存储Long。理解?
答案 2 :(得分:0)
怎么样?
在DisplayActivity中,
使用getIntent().getIntExtra("ID_TAG")