如何从回调函数返回某些内容给父函数

这就是我要做的


UploadCompleteListener 是一个充当回调的自定义接口。


@Overrider

public Result doWork() {


        mUpLoadDataService.uploadInspectionData(new UpLoadDataService.UploadCompleteListener() {

            @Override

            public void uploadComplete() {

                    return Result.success(); //this is what I want to do

            }


            @Override

            public void uploadFailed(String reason) {

                return Result.failure(); //this is what I want to do

            }

        });


        return null;

    }

是否可以?


如果可能的话,请尽快回复。如果您需要,我可以提供更多详细信息。


梵蒂冈之花
浏览 128回答 4
4回答

鸿蒙传说

** 这对我有用 ** @NonNull    @Override    public Result doWork() {        final Result[] result = new Result[1];        mUpLoadDataService.uploadInspectionData(new UpLoadDataService.UploadCompleteListener() {            @Override            public void uploadComplete() {                    result[0] = Result.success(); //this is what I want to do            }            @Override            public void uploadFailed(String reason) {                result[0] = Result.failure(); //this is what I want to do            }        });        return result[0];    }

德玛西亚99

  public Result doWork(UpLoadDataService.UploadCompleteListener uploadListener) {    mUpLoadDataService.uploadInspectionData(uploadListener);    return null;}现在传递父函数的实现。假设你的父函数被命名为foobarvoid foobar() {   someObject.doWork(new UpLoadDataService.UploadCompleteListener() {   @Override   public void uploadComplete() {       //write your logic here       return Result.success();    }   @Override   public void uploadFailed(String reason) {       //write your logic here       return Result.failure();    }   });}

当年话下

您可以使用以下方式获取任务的回调&nbsp;doWork(paremter, new ServiceListener<String>() { //paremter if any&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void success(String obj) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //get the response if success&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void fail(ServiceError error) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //get the error response&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });完成工作并从调用的地方发送调用响应&nbsp;private void doWork(String param , ServiceListener<String> serviceListener) {&nbsp; &nbsp; mUpLoadDataService.uploadInspectionData(new UpLoadDataService.UploadCompleteListener() {&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void uploadComplete() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; serviceListener.success("success");&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void uploadFailed(String reason) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; serviceListener.fail(new ServiceError("Can not Upload"));&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });}ServiceListener接口定义如下public interface ServiceListener<T> {&nbsp; &nbsp; void success(T obj);&nbsp; &nbsp; void fail(ServiceError error);}public class ServiceError {&nbsp; &nbsp; public Throwable errorObject;&nbsp; &nbsp; public String message;&nbsp; &nbsp; public ServiceError(){&nbsp; &nbsp; &nbsp; &nbsp; message = "";&nbsp; &nbsp; }&nbsp; &nbsp; public ServiceError(String message){&nbsp; &nbsp; &nbsp; &nbsp; this.message = message;&nbsp; &nbsp; }&nbsp; &nbsp; public ServiceError(String message, Throwable errorObject){&nbsp; &nbsp; &nbsp; &nbsp; this.message = message;&nbsp; &nbsp; &nbsp; &nbsp; this.errorObject = errorObject;&nbsp; &nbsp; }&nbsp; &nbsp; public Object getErrorObject() {&nbsp; &nbsp; &nbsp; &nbsp; return errorObject;&nbsp; &nbsp; }&nbsp; &nbsp; public void setErrorObject(Throwable errorObject) {&nbsp; &nbsp; &nbsp; &nbsp; this.errorObject = errorObject;&nbsp; &nbsp; }&nbsp; &nbsp; public String getMessage() {&nbsp; &nbsp; &nbsp; &nbsp; return message;&nbsp; &nbsp; }&nbsp; &nbsp; public void setMessage(String message) {&nbsp; &nbsp; &nbsp; &nbsp; this.message = message;&nbsp; &nbsp; }}

DIEA

您可以EventBus在您想要的每个地方使用通知订阅方法,如下所示:public class MessageEvent {&nbsp; &nbsp; public final String message;&nbsp; &nbsp; public MessageEvent(String message) {&nbsp; &nbsp; &nbsp; &nbsp; this.message = message;&nbsp; &nbsp; }}public void doWork() {&nbsp; &nbsp; &nbsp; &nbsp; mUpLoadDataService.uploadInspectionData(new UpLoadDataService.UploadCompleteListener() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void uploadComplete() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EventBus.getDefault().post(new MessageEvent("success"));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void uploadFailed(String reason) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EventBus.getDefault().post(new MessageEvent("failed"));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; }@Subscribe(threadMode = ThreadMode.MAIN)public void onMessageEvent(MessageEvent event) {&nbsp; &nbsp; Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();}请参阅本实施指南。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java