Android 如何在返回布尔值之前先等待改装响应

Android 如何在返回布尔值之前先等待改装响应,android,multithreading,boolean,retrofit,fragmentpageradapter,Android,Multithreading,Boolean,Retrofit,Fragmentpageradapter,总是在请求完成之前返回错误的值。验证将在不等待响应的情况下返回该值。我正在使用改装请求,然后我把它放在侦听器上 谢谢你的帮助,我们非常接受你的建议 这是我的代码,我对屏幕进行了验证,当它为真时,它将转到另一个屏幕 @Override public boolean isValid() { if (NetworkUtils.isConnected(getActivity())) { final AtomicBoolean pass = new AtomicBoolean(fa

总是在请求完成之前返回错误的值。验证将在不等待响应的情况下返回该值。我正在使用改装请求,然后我把它放在侦听器上

谢谢你的帮助,我们非常接受你的建议

这是我的代码,我对屏幕进行了验证,当它为真时,它将转到另一个屏幕

@Override
public boolean isValid() {
    if (NetworkUtils.isConnected(getActivity())) {
        final AtomicBoolean pass = new AtomicBoolean(false);
        Thread simpleThread = new Thread() {
            public void run() {
                new ReprintOnlineHelper(rType, receiptNoEditText.getText().toString(), issuedDate, etTotalAmtPaid.getText().toString(), new ReprintOnlineHelper.ReceiptNoSearchListener() {
            @Override
            public boolean onServiceResponse(List<ReceiptNumber> receiptNumbers) {
                Log.e("receiptNumbers", "" + receiptNumbers.get(0).getTPAYRECEIPTNO());

                if (receiptNumbers.isEmpty()) {
                    returnValue = "eReceipt Number not found!";
                    val = true;
                } else {
                    String pdates = null, ddates;
                    try {
                        if (!receiptNumbers.get(0).getTPAYISSUEDDATE().isEmpty()) {
                            Date periodFormat = df.parse(receiptNumbers.get(0).getTPAYISSUEDDATE());
                            pdates = sdf.format(periodFormat);
                        }

                    } catch (ParseException e) {
                        e.printStackTrace();
                        Log.e("ddd", "" + e.getMessage());
                    }

                    String tinNo = receiptNumbers.get(0).getTPTIN();
                    if (tinNo.contains("-")) {
                        tinNo = receiptNumbers.get(0).getTPTIN().replace("-", "");
                    }

                    Log.e("JAC", "" + receiptNumbers.get(0).getTPAYRECEIPTNO() + "---" + AlfonzoUtils.formatDate(DateUtils.simpledateToMillis(pdates, DateUtils.DateFormat.SIMPLE_DATE_5_FORMAT)) + "---" + MoneyEditText.toDouble(receiptNumbers.get(0).getTOTALPAID()) + "--" + AlfonzoUtils.formatDate(issuedDate) + "--" + receiptNoEditText.getText().toString() + "--" + tinNo + "--"+revenueCollection.getTpTin().replace("-", ""));

                    if (receiptNumbers.get(0).getTPAYRECEIPTNO().equals(receiptNoEditText.getText().toString()) &&
                            AlfonzoUtils.formatDate(DateUtils.simpledateToMillis(pdates, DateUtils.DateFormat.SIMPLE_DATE_5_FORMAT)).contentEquals(AlfonzoUtils.formatDate(issuedDate))
                            && MoneyEditText.toDouble(receiptNumbers.get(0).getTOTALPAID()) == MoneyEditText2.toDouble(etTotalAmtPaid.getText().toString()) && tinNo.equals(revenueCollection.getTpTin().replace("-", ""))) {
                        pass.set(true);
                        returnValue = "success";
                        val = true;
                        showMessagePrompt(rType,returnValue);
                        return true;
                    } else if (!tinNo.equals(revenueCollection.getTpTin().replace("-", ""))) {
                        returnValue = "eReceipt Number was not issued to this TIN " + revenueCollection.getTpTin();
                        val = false;
                    } else if (!AlfonzoUtils.formatDate(DateUtils.simpledateToMillis(pdates, DateUtils.DateFormat.SIMPLE_DATE_5_FORMAT)).contentEquals(AlfonzoUtils.formatDate(issuedDate))) {
                        returnValue = "Issued date is not valid";
                        val = false;
                    } else if (MoneyEditText.toDouble(receiptNumbers.get(0).getTOTALPAID()) != MoneyEditText2.toDouble(etTotalAmtPaid.getText().toString())) {
                        returnValue = "Total amount paid is not valid";
                        val = false;
                    } else if (!receiptNumbers.get(0).getTPAYRECEIPTNO().equals(receiptNoEditText.getText().toString())) {
                        returnValue = "ReceiptNo is not valid";
                        val = false;
                    }
                }
                return false;
            }

            @Override
            public void onErrorResponse(int err) {

            }
        }).reprintReceiptNo();

            }
        };

        if (!receiptNoEditText.getText().toString().isEmpty() && issuedDate != 0 /*&& MoneyEditText2.toDouble(etTotalAmtPaid.getText().toString()) > 0*/) {
            try {
                simpleThread.start();
                simpleThread.join();
                pass.get();


                Log.e("pass", "" + pass + "-" + pass.get() + val);


            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            return pass.get();
        }


    }

    return false;
}
@覆盖
公共布尔值isValid(){
if(NetworkUtils.isConnected(getActivity())){
最终原子布尔过程=新原子布尔(假);
线程simpleThread=新线程(){
公开募捐{
新的RepentOnlineHelper(rType,receiptNoEditText.getText().toString(),issuedDate,EttoAlamtPaid.getText().toString(),新的RepentOnlineHelper.ReceiptNoSearchListener()){
@凌驾
公共布尔onServiceResponse(列出接收编号){
Log.e(“receiptNumbers”,“”+receiptNumbers.get(0.getTPAYRECEIPTNO());
if(receiptNumber.isEmpty()){
returnValue=“未找到接收编号!”;
val=真;
}否则{
字符串pdates=null,ddates;
试一试{
如果(!receiptNumbers.get(0.getTPAYISSUEDDATE().isEmpty()){
dateperiodFormat=df.parse(receiptNumbers.get(0.getTPAYISSUEDDATE());
pdates=sdf.format(周期格式);
}
}捕获(解析异常){
e、 printStackTrace();
Log.e(“ddd”,“e.getMessage());
}
字符串tinNo=receiptNumbers.get(0.getTPTIN();
if(序号包含(“-”){
tinNo=receiptNumbers.get(0.getTPTIN().replace(“-”,”);
}
Log.e(“JAC”,“+receiptNumbers.get(0).getTPAYRECEIPTNO()+”--“+AlfonzoUtils.formatDate(pdates,DateUtils.DateFormat.SIMPLEúDATEúFORMAT))+”--“+MoneyEditText.toDouble(receiptNumbers.get(0).gettotalpid())+”--“+AlfonzoUtils.formatDate(issuedDate)+”--“+receiptNoEditText.getText().toString()”+”+tinNo+“--”+revenueCollection.getPtin().replace(“-”,”);
if(receiptNumbers.get(0).getTPAYRECEIPTNO().equals(receiptNoEditText.getText().toString())&&
AlfonzoUtils.formatDate(DateUtils.SimpleDateTomilis(pdates,DateUtils.DateFormat.SIMPLE_DATE_5_格式)).contentEquals(AlfonzoUtils.formatDate(issuedDate))
&&MoneyEditText.toDouble(receiptNumbers.get(0.getTOTALPAID())==MoneyEditText2.toDouble(eTToTalAmpAid.getText().toString())和&tinNo.equals(revenueCollection.getTpTin().replace(“-”,”)){
通过。设置(真);
returnValue=“成功”;
val=真;
showMessagePrompt(rType,returnValue);
返回true;
}如果(!tinNo.equals(revenueCollection.getPtin().replace(“-”,”)),则为else{
returnValue=“eReceipt编号未颁发给此TIN”+revenueCollection.getTpTin();
val=假;
}否则如果(!AlfonzoUtils.formatDate(DateUtils.simpledateToMillis(pdates,DateUtils.DateFormat.SIMPLE_DATE_5_FORMAT)).contentEquals(AlfonzoUtils.formatDate(issuedDate))){
returnValue=“发布日期无效”;
val=假;
}else if(MoneyEditText.toDouble(receiptNumbers.get(0.gettotalpid())!=MoneyEditText2.toDouble(etTotalAmtPaid.getText().toString()){
returnValue=“支付的总金额无效”;
val=假;
}如果(!receiptNumbers.get(0).getTPAYRECEIPTNO().equals(receiptNoEditText.getText().toString()),则为else{
returnValue=“ReceiptNo无效”;
val=假;
}
}
返回false;
}
@凌驾
公共响应(int err){
}
}).repentreceiptno();
}
};
如果(!receiptNoEditText.getText().toString().isEmpty()&&issuedDate!=0/*&&MoneyEditText2.toDouble(etTotalAmtPaid.getText().toString())>0*/){
试一试{
simpleThread.start();
simpleThread.join();
pass.get();
Log.e(“传递”,“传递+”-“+pass.get()+val”);
}捕捉(中断异常e){
e、 printStackTrace();
}
返回pass.get();
}
}
返回false;
}
这是我在改装中的要求:

   public void reprintReceiptNo() {
    JSONObject jO = new JSONObject();
    JSONObject result = new JSONObject();
    JSONArray jsonArray = new JSONArray();
    try {
        jO.put("xReceipt", receiptTypeNo);
        jO.put("xType", receipttype);
        jsonArray.put(jO);
        result.put("dataArray", jsonArray);

    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Log.e("dataArray", "----- " + result.toString());

    ServiceInterface si = BaseRestClient.getClient();
    Observable<List<ReceiptNumber>> call = si.getreprintReceiptNumber(result.toString());
    call.subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<List<ReceiptNumber>>() {
                @Override
                public void onCompleted() {

                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onNext(List<ReceiptNumber> receiptNumbers) {
                    Log.e("receiptNumbers", "" + receiptNumbers.toString());
                    onReceiptNoSearchListener.onServiceResponse(receiptNumbers);
                }
            });
}
public void repentreceiptno(){
JSONObject jO=新的JSONObject();
JSONObject结果=新建JSONObject();
JSONArray JSONArray=新的JSONArray();
试一试{
jO.put(“X收据”,收据类型编号);
jO.put(“xType”,receipttype);
jsonArray.put(jO);
result.put(“dataArray”,jsonArray);
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Log.e(“dataArray”,“----”+result.toString());
ServiceInterface si=BaseRestClient.getClient();
可观察调用=si.getRepentReceiptNumber(result.toString());
call.subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread())
.订阅(新观察员){
@凌驾
未完成的公共无效(){
}
@凌驾
公共无效申报人(可丢弃的e){
}
@凌驾
public void onNext(列出收件编号){
Log.e(“receiptNum