2014-06-08 216 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。