我在创建活动时创建一个HashMap<String, Boolean> ...哈希图包含:

{email=false, username=false, password=false, firmcode=false}


在成功响应之后,我从onResponse回调内部的Retrofit调用获取到信息,我将hashmap的密码密钥的值更新为true

inputValidityMap.put(getResources().getString(R.string.password_tag), true);


问题是当我记录哈希图时,密码密钥的值尚未更新

if (connectivityObserver.getConnectivityStatus(getActivity()) != AppConfig.NO_CONNECTION) {
     Call<UserConnectionStaff> call = apiService.isPasswordValid(getResources().getString(R.string.passwordValidation), registerPasswordEdt.getText().toString());
     call.enqueue(new Callback<UserConnectionStaff>() {
           @Override
           public void onResponse(Response<UserConnectionStaff> response, Retrofit retrofit) {
              int resource_message = inputValidationCodes.get(response.body().getError_code());
              if (isAdded()) {
                 if (response.body().getError_code() != AppConfig.INPUT_OK) {
                    if (response.body().getError_code() == AppConfig.ERROR_INVALID_INPUT) {
                        passwordErrorTtv.setText(commonElements.decodeUtf8(commonElements.encodeUtf8(getResources().getString(resource_message))));
                    } else
                        passwordErrorTtv.setText(commonElements.decodeUtf8(commonElements.encodeUtf8(getResources().getString(resource_message))));
                    }
                } else {
                    animationStaff(acceptPasswordRlt, 0.0f, 1.0f, "visible");
                    animationStaff(showHidePasswordTtv, 1.0f, 0.0f, "gone");
                    Log.d(debugTag, inputValidityMap.containsKey(getResources().getString(R.string.password_tag)) + "");
                    inputValidityMap.put(getResources().getString(R.string.password_tag), true);
                }
             }
          }

          @Override
          public void onFailure(Throwable t) {
             if (isAdded()) {
                if (t instanceof IOException) {
                     setToastHelperMsg(getResources().getString(R.string.unavailable_service));
                } else {
                     setToastHelperMsg(getResources().getString(R.string.error_occured));
                }
                registerUsernameEdt.setText(null);
                progressViewActions("stop", usernameProgressView);
             }
          }
     });
} else {
     if ( isAdded() )
          setToastHelperMsg(getResources().getString(R.string.no_connection));
}
Log.d(debugTag, inputValidityMap.toString());

最佳答案

我认为问题是

 **Log.d(debugTag, inputValidityMap.toString());**


在onResponse或onFailure事件之外。 onResponse和onFailure将异步执行,并且在到达代码的最后一行即日志行之前可能不会执行。

在onResponse方法上修改哈希映射之后,尝试添加完全相同的日志行。您应该首先在最后一行上的日志中看到该值仍然为false的日志,然后您将看到在执行onResponse方法之后该值追逐为true。

10-06 06:05