【问题标题】:Passing parameters from AsyncTask to an method将参数从 AsyncTask 传递给方法
【发布时间】:2014-07-29 05:28:24
【问题描述】:

我在图像上使用 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();
}

【问题讨论】:

    标签: android parameter-passing android-alertdialog


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      改变

      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 v 类型转换为ImageView 并使用v.getId();

      【讨论】:

        【解决方案3】:

        您可以将 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);
        
                            }
                        })
        ...
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-23
          • 2017-01-05
          相关资源
          最近更新 更多