我正在尝试将 ID 传递给我的新创建 Activity 。
显而易见的解决方案似乎是使用“Intent.putExtra(name, value);”。 但由于 Intent 仅在点击时创建,所以我所有的按钮都具有相同的 Intent extras(通常为 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
}
在代码 fragment 中,IDList.get(i) 超出了范围,并且在单击按钮之前不会检查新的 Final Int,这也超出了范围。
还有其他方法可以让我在点击时发送变量吗?
最佳答案
您可以创建一个实现 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)));
}
关于java - Android - 动态设置 Intent 附加功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21937078/