2015-11-18 106 views
0

平臺:Android的java調用的內部函數父的回調函數

我是新來的Java,我想要做這樣的事情:

private void PostToServer(final Callback mycallback){ 

    OkHttpClient client= new OkHttpClient(); 
    //some codes.... 
    client.newCall(req).enqueue(new Callback(){ 
     private void onFailure(Request req,IOException e){ 
      tip("SERVER ERROR!"); 
     } 
     private void onResponse(Response resp){ 
      Call mycallback(resp); //how to call the callback? 
     } 
    } 
} 

我想用這樣的:(使我自己的一個接口)

PostToServer(new callback(){ 
    @Override 
    private void onSuccess(String resp){ 
     if(resp==1){ 
     tip("SERVER CONNECTED!"); 
     } 
    } 
}); 

目標:呼叫myCallBack函數在onResponse()。

順便說一句,這是什麼類型的代碼叫什麼名字?我應該使用哪些關鍵字進行搜索?

非常感謝!

okhttp回調接口:direct link

package com.squareup.okhttp;  
import java.io.IOException; 

public interface Callback {  
    void onFailure(Request request, IOException e);  
    void onResponse(Response response) throws IOException; 
} 
+0

哪種方法是「主功能的回調」?請澄清你的問題。你想在dothings方法中給出的回調參數調用一個方法? – ParkerHalo

回答

1

不知道具體的問題是什麼。但是你正在使用一個匿名的內部類。如果它們是最終的,你只能從外面訪問對象。對於Java 8,你的回調參數應該是隱式的final。如果您使用的是Java 7(您正在使用Android IIRC),則需要使用final關鍵字標記參數。

如果你問過你正在努力實現的設計模式......你在做什麼類似於函數式編程,爲你傳遞應作爲回調對象執行的功能。

+0

我的目的是:從回調函數的內部函數調用main函數的回調。 – xtr3mz

+0

在這種情況下,簡單地final關鍵字添加到您的方法參數: 「私人無效dothings(最終回調回調){」 –

+0

我更新了我的代碼,希望它更好地理解。抱歉。 – xtr3mz