亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從回調函數返回某些內容給父函數

如何從回調函數返回某些內容給父函數

梵蒂岡之花 2023-11-01 16:44:22
這就是我要做的UploadCompleteListener 是一個充當回調的自定義接口。@Overriderpublic 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;    }是否可以?如果可能的話,請盡快回復。如果您需要,我可以提供更多詳細信息。
查看完整描述

4 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

** 這對我有用 **


 @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];

    }


查看完整回答
反對 回復 2023-11-01
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

  public Result doWork(UpLoadDataService.UploadCompleteListener uploadListener) {


    mUpLoadDataService.uploadInspectionData(uploadListener);


    return null;

}

現在傳遞父函數的實現。假設你的父函數被命名為foobar


void 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(); 

   }

   });

}


查看完整回答
反對 回復 2023-11-01
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

您可以使用以下方式獲取任務的回調


 doWork(paremter, new ServiceListener<String>() { //paremter if any

        @Override

        public void success(String obj) {

            //get the response if success

        }

        @Override

        public void fail(ServiceError error) {

            //get the error response


        }

    });

完成工作并從調用的地方發送調用響應


 private void doWork(String param , ServiceListener<String> serviceListener) {



    mUpLoadDataService.uploadInspectionData(new UpLoadDataService.UploadCompleteListener() {

        @Override

        public void uploadComplete() {

            serviceListener.success("success");

        }


        @Override

        public void uploadFailed(String reason) {

            serviceListener.fail(new ServiceError("Can not Upload"));

        }

    });


}

ServiceListener接口定義如下


public interface ServiceListener<T> {

    void success(T obj);

    void fail(ServiceError error);

}

public class ServiceError {

    public Throwable errorObject;

    public String message;


    public ServiceError(){

        message = "";

    }


    public ServiceError(String message){

        this.message = message;

    }


    public ServiceError(String message, Throwable errorObject){

        this.message = message;

        this.errorObject = errorObject;

    }


    public Object getErrorObject() {

        return errorObject;

    }


    public void setErrorObject(Throwable errorObject) {

        this.errorObject = errorObject;

    }


    public String getMessage() {

        return message;

    }


    public void setMessage(String message) {

        this.message = message;

    }

}


查看完整回答
反對 回復 2023-11-01
?
DIEA

TA貢獻1820條經驗 獲得超2個贊

您可以EventBus在您想要的每個地方使用通知訂閱方法,如下所示:


public class MessageEvent {


    public final String message;


    public MessageEvent(String message) {

        this.message = message;

    }

}



public void doWork() {


        mUpLoadDataService.uploadInspectionData(new UpLoadDataService.UploadCompleteListener() {

            @Override

            public void uploadComplete() {

                    EventBus.getDefault().post(new MessageEvent("success"));

            }


            @Override

            public void uploadFailed(String reason) {

                    EventBus.getDefault().post(new MessageEvent("failed"));

            }

        });


    }



@Subscribe(threadMode = ThreadMode.MAIN)

public void onMessageEvent(MessageEvent event) {

    Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();

}

請參閱本實施指南。


查看完整回答
反對 回復 2023-11-01
  • 4 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號