将参数从AsyncTask传递给方法

时间:2014-06-08 14:49:40

标签: android parameter-passing alertdialog

我在图像上使用onClick来运行AlertDialog。 onClick在AsyncTask的onPostExecute中设置。

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的查询..

如何在下一课中获得图像的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();
}

3 个答案:

答案 0 :(得分:1)

您可以将id作为final int

传递给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);

                    }
                })
...
}

答案 1 :(得分: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:将View v内的showpopup() Typecast导入ImageView 并使用v.getId();

答案 2 :(得分:0)

执行此操作的一种方法是创建AsyncTask子类,并将Id存储在该类中。然后将id作为实例变量存储在asynctask子类中,并在activity中创建asynctask子类的实例,并为Id创建一个getter。