单击侦听器内部的异步任务传递对接口的引用

时间:2015-11-29 16:01:02

标签: android interface callback

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

这段代码有效,但我的任务只能执行一次。

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

                    buyItemTask.execute(TEXTVIEW_ITEM_NAME);
                }
            });

如果我希望在类顶部实现的this具有itemBoughtTaskListener implements ItemShopBuyItemTask.itemBoughtTaskListener >

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

3 个答案:

答案 0 :(得分:2)

因为Fragment正在实现itemBoughtTaskListener,所以需要将FragmentName.this作为第二个参数传递:

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

答案 1 :(得分:0)

我理解的是你想要这一行

final ItemShopBuyItemTask buyItemTask = new ItemShopBuyItemTask(getActivity(), this);

在onClick方法中。  所以你可以使用

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

希望它能奏效。

答案 2 :(得分:0)

然后你能做的就是:

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

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