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中的返回值,否則我無法得到它,如果我將它移動到響應塊 –
但是你不能得到它在click監聽器中,你的監聽器onClick()方法會在網絡調用回來之前很久才完成執行,您想對響應做什麼?更新UI? – elmorabea
我只是想立即得到響應,因爲在下一步我將使用返回值來使另一個請求 –