Android - 动态设置intent Extras

时间:2014-02-21 14:25:48

标签: java android android-intent android-activity

我正在尝试将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,也超出范围。

还有其他我可以点击发送变量吗?

1 个答案:

答案 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)));
 }