gpt4 book ai didi

java - Android - iOS block 回调的 Java 等价物?

转载 作者:太空狗 更新时间:2023-10-29 15:51:02 25 4
gpt4 key购买 nike

在我的 Android 应用程序中,当我从后端读取文章时,我想实现成功和错误回调。在 iOS 中,它看起来像这样:

在我的 Passage.h 中:

-(void)getPassagesWithSuccessCallback:(void (^)(NSArray<Passage *> *))success errorCallback:(void (^)(NSString *))errorString;

在我的 Passage.m 中:

-(void)getPassagesWithSuccessCallback:(void (^)(NSArray<Passage *> *))success errorCallback:(void (^)(NSString *))errorString {
MyApiInterface* api = [MyApiInterface sharedInstance];
[api sendGetRequestTo:@"passages" successCallback:[Passage modelListCallback:success] errorCallback:error];
}

在我的 Android 应用程序中,我使用 Volley 来处理我的 API 请求,但我想通过使用带有 public static void 的 Passage.java 类来进一步封装此 API 接口(interface) 获取段落的方法。像这样:

public static void getPassagesForFirebaseUser(FirebaseUser user, Context context) {
final String url = URL_BASE + "/passages.json" + "?auth=" + user.getToken(false);
final JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// convert JSON into ArrayList<Passage> object
// pass on this array of Passages in the success completion listener of the method that called this
// just like iOS does success(passages)
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// convert error to string
// pass on this errorString in the error completion listener of the method that called this
// just like iOS does error(errorString)
}
});
Volley.newRequestQueue(context).add(request);
}

有什么办法可以得到这种实现流程吗?

最佳答案

你可以使用一个接口(interface)

public interface ICallbacks { 
public void onResponse(JSONObject response);
public void onError(VolleyError error);
}

然后在您的例程代码中放置一个新的回调实例(取决于您工作的 ide 可以自动生成方法)

public static void getPassagesForFirebaseUser(FirebaseUser user,
Context context, ICallbacks events) {
//here code and call ICallbacks methods
if(result){ events.onResponse(response); }
if(error){ events.onError(err); }
}

最终你可以调用这个方法:

getPassagesForFirebaseUser(user, context, new ICallbacks(){
@Override
public void onResponse(JSONObject response){
//Success !!!
}
@Override
public void onError(VolleyError response){
//Error !!!
}
});

抱歉我的英语不好,希望对您有所帮助!

关于java - Android - iOS block 回调的 Java 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39059424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com