2015-11-29 166 views
1

我現在有一個實現一個接口異步任務的接口

的其中工程代碼塊的一類,但我的任務只能執行一次。

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

        buyItemTask.execute(TEXTVIEW_ITEM_NAME); 
       } 
      }); 

我如何可以移動this中的onClick(視圖V)功能的內部時,預計一個itemBoughtTaskListener這是在類的頂部實現:implements ItemShopBuyItemTask.itemBoughtTaskListener

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

使用當前代碼有什麼問題? –

+0

該任務只能被調用一次,當我需要它在按鈕單擊時創建新任務時,因此可以多次調用它 – user2950720

回答

2

由於片段正在實施itemBoughtTaskListener則需要通過FragmentName.this作爲第二個參數:

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

我明白了什麼是你想要這條線

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

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

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

希望它能工作。

0

然後,你可以做的是這樣的:

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

,並調用此方法多次你要!!!