Android 异步任务在click listener中传递对接口的引用

Android 异步任务在click listener中传递对接口的引用,android,interface,callback,Android,Interface,Callback,我目前有一个实现接口的类 这段代码可以工作,但我的任务只能执行一次 final ItemShopBuyItemTask buyItemTask = new ItemShopBuyItemTask(getActivity(), this); mButtonBuy.setOnClickListener(new View.OnClickListener() { @Override public void onCli

我目前有一个实现接口的类

这段代码可以工作,但我的任务只能执行一次

final ItemShopBuyItemTask buyItemTask = new ItemShopBuyItemTask(getActivity(), this);
            mButtonBuy.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    buyItemTask.execute(TEXTVIEW_ITEM_NAME);
                }
            });
当onClick(View v)函数需要一个
itemBoughtTaskListener
时,如何将
this
移动到函数内部,该函数在类的顶部实现为:
implements ItemShopBuyItemTask.itemBoughtTaskListener

public ItemShopBuyItemTask(Context context, itemBoughtTaskListener cb){
        dialog = new ProgressDialog(context);
        mCallback = cb;
    }

我的理解是你想要这条线

final ItemShopBuyItemTask buyItemTask = new ItemShopBuyItemTask(getActivity(), this);
要使用onClick方法。 所以你可以用

final ItemShopBuyItemTask buyItemTask = new ItemShopBuyItemTask(getActivity(), ClassName.class);

希望它能工作。

因为Fragment正在实现
itemBoughtTaskListener
,所以需要传递FragmentName。这是第二个参数:

@Override
 public void onClick(View v) {
      ItemShopBuyItemTask buyItemTask = new ItemShopBuyItemTask(getActivity(),
                                                    FragmentClassName.this);
      buyItemTask.execute(TEXTVIEW_ITEM_NAME);
 }

那么你能做的就是:

public void accessWebService(){
   ItemShopBuyItemTask buyItemTask = new ItemShopBuyItemTask(getActivity(), itemBoughtTaskListener cb);
   buyItemTask.execute(TEXTVIEW_ITEM_NAME);
}

并根据需要多次调用此方法

使用当前代码时遇到什么问题?当我需要在单击按钮时创建新任务时,任务只能调用一次,因此可以多次调用