2013-05-17 67 views
3

我創建這個方法/函數,我需要實現回調。我的意思是,我需要添加一個動態參數,一個函數。 我已經閱讀了幾篇文章,但我無法理解如何得到它。 任何想法或使用的例子?如何創建回調(添加爲動態參數,函數)?

public void httpReq (final String url, final Object postData, String callbackFunct, Object callbackParam,String callbackFailFunct) { 
    if (postData == null || postData == "") { 
     //GET 
     Thread testGET = new Thread(new Runnable() { 
      @Override 
      public void run() { 
       StringBuilder builder = new StringBuilder(); 
       HttpClient client = new DefaultHttpClient(); 
       HttpGet httpGet = new HttpGet(url); 
       .... 
       } 
     } 
    } else { 
     //POST 
     Thread testPOST = new Thread(new Runnable() { 
      @Override 
      public void run() { 
       HttpGet httpPost = new HttpPost(url); 
       .... 
       } 
     } 
    } 
} 
+0

此代碼已經嚇到我了。希望你只是在你的帖子中使用它。 –

+0

對GoT用戶名+1和小傢伙路由 –

回答

15

定義你的接口:

public interface MyInterface { 
    public void myMethod(); 
} 

其添加爲放慢參數爲你的方法

public void httpReq (final String url, final Object postData, String callbackFunct, Object callbackParam,String callbackFailFunct, MyInterface myInterface) { 
    // when the condition happens you can call myInterface.myMethod(); 
} 

,當你打電話給你的方法,你都會有,例如,

myObjec.httpReq(url, postData, callbackFunct, callbackParam, callbackFailFunct, 
new MyInterface() { 
    @Override 
    public void myMethod() { 

    } 
}); 

就是你所需要的d?

+0

這是做到這一點的方法。 –

+0

非常感謝!現在我明白如何使用它了。 @ChristianBongiorno爲什麼害怕你的代碼?是否指向「callbackFunct String,Object callbackParam,String callbackFailFunct」?問候! – TyrionLannister

+0

你有幾乎相同的線程代碼,並且你已經聲明它們是匿名的內部類(因此你需要聲明你的函數參數爲'final'的原因如果你必須做多線程,你應該創建離散的靜態內部類(不是匿名的)並且它們應該是'Callable'的,所以你可以將它們提交給Executor服務 哦,是的,你在這裏編碼實際上並沒有啓動線程 我猜根本沒有一個明確的理由爲什麼我的關注 –