我在创建活动时创建一个HashMap<String, Boolean>
...哈希图包含:
{email=false, username=false, password=false, firmcode=false}
在成功响应之后,我从
onResponse
回调内部的Retrofit调用获取到信息,我将hashmap的密码密钥的值更新为trueinputValidityMap.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。