2014-06-08 160 views
1

我在图像上使用onClick来运行AlertDialog。 onClick在AsyncTask的onPostExecute中设置。将参数从AsyncTask传递给方法

ImageView image = new ImageView(getApplicationContext()); 
      image.setBackgroundResource(R.drawable.ic_action_discard); 
      image.setId(n); 
      image.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        showpopup(); 
       } 
      }); 

当对话框被显示,并在用户按下肯定按钮我需要运行与图像的ID查询..

我如何才能在获得图像的标识下课;

public void showpopup() { 
    new AlertDialog.Builder(this) 
      .setTitle(getString(R.string.Alertdialognl1)) 
      .setMessage(getString(R.string.Alertdialognl2)) 
      .setPositiveButton(getString(R.string.Alertdialognlja), 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface Dialog, 
           int which) { 
          Log.i("positive", "clicked"); 
         } 
        }) 
      .setNegativeButton(getString(R.string.Alertdialognlnee), 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface Dialog, 
           int which) { 
          Log.i("negative", "clicked"); 
         } 
        }).show(); 
} 

回答

1

您可以将ID传递到showPopup作为最终诠释

public void showPopup(final int id) { 
... 
.setPositiveButton(getString(R.string.Alertdialognlja), 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface Dialog, 
          int which) { 
         Log.i("positive", "clicked with id: " + id); 

        } 
       }) 
... 
} 
0

变化

public void onClick(View v) 

public void onClick(final View v) 

这将让你的内部访问点击查看对话框按钮的onClickListener

而且

showpopup() 
public void showpopup() 

showpopup(v) 
public void showpopup(View V) 

PS:类型转换showpopup()View vImageView和使用要做到这一点v.getId();

0

一种方法是创建的AsyncTask子类并存储在该类中的Id。然后,只需将asynctask子类中的id作为实例变量存储并在活动中创建asynctask子类的实例并为Id创建一个getter。