我正在尝试将ID传递给我在创作时的新活动。
显而易见的解决方案似乎是使用“Intent.putExtra(name,value);”。 但由于意图仅在点击时创建,因此我的所有按钮都具有相同的Intent附加功能(使用null)。
有什么办法可以从循环中初始化这些吗?
for ( int i = 0; i< IDList.size() ; i++)
{
//Get Information from ID
btnDetails.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent(getApplicationContext(),DetailActivity.class);
intent.putExtra("", IDList.get(i));
startActivity(intent);
}
});
//Add To Screen
}
在代码中,snippit IDList.get(i)超出范围,并且在单击按钮之前不会检查新的Final Int,也超出范围。
还有其他我可以点击发送变量吗?
答案 0 :(得分:4)
您可以使用实现OnClickListener的内部类,并将id作为参数。例如
private class MyOnClickListener implements OnClickListener {
private final int mId;
public MyOnClickListener(int id) {
mId = id;
}
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), DetailActivity.class);
intent.putExtra("", mId);
startActivity(intent);
}
}
for ( int i = 0; i< IDList.size() ; i++) {
btnDetails.setOnClickListener(new MyOnClickListener(IDList.get(i)));
}