1
개조를 사용하여 응답을 올바르게 얻은 다음 응답 본문의 객체에 응답을 전달하고 UI 스레드에서 객체를 가져 오는 데 실패합니다. NullPointerException 오류, 비동기 요청의 문제라고 생각합니다. 어떻게이 문제를 피할 수 있습니까?Android 개조 요청 메인 개조에서 개장 응답받는 방법
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
util = new Util(this);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
util.login("[email protected]", "sdjflsdkf");
// There is a NullPointerException? How Can I
// use this methond correctly in this way?
Log.d("user", util.getUserInfo().toString());
}
});
}
public class Util {
private UserInfo userInfo;
public UserInfo getUserInfo() {
return userInfo;
}
public void login(final String email, final String password) {
Call<UserInfo> loginCall = apiInterface.login(email, password);
loginCall.enqueue(new Callback<UserInfo>() {
@Override
public void onResponse(Call<UserInfo> call, Response<UserInfo> response) {
userInfo = response.body();
}
@Override
public void onFailure(Call<UserInfo> call, Throwable t) {
}
});
}
네,하지만 저는 clickListener에서 반환 값을 얻고 싶습니다. 그렇지 않으면 응답 블록으로 이동하면 얻을 수 없습니다. –
하지만 클릭 수신기에서 얻을 수없는 경우에는 수신기 (onClick) 메소드가 네트워크 호출이 응답으로 돌아 오기 훨씬 전에 실행 완료, 응답으로 무엇을 하시겠습니까? UI를 업데이트 하시겠습니까? – elmorabea
다음 단계에서 다른 값을 사용하기 위해 반환 값을 사용하기 때문에 즉시 응답을 원합니다. –