java - Android - 动态设置 Intent 附加功能

标签 java android android-intent android-activity

我正在尝试将 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/

相关文章:

java - 将 C++ 函数翻译成 Java

java - Java中变量的访问权限

java - MapStruct - 嵌套映射

java - 跟踪位置以动画 fragment 之间的过渡

javascript - 如何在混合应用程序中移动这个有缺陷的原生裁剪框?

安卓语音操作 : set-alarm intent

java - 通过 Intent 传递内部带有 arraylist 的对象

抛出 RuntimeException 的 Java 函数

java - 应用程序崩溃 java.lang.NumberFormatException : Invalid int:

android - 单击 GridView 时如何将数组列表(位置)发送到另一个 Activity