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
我只是想立即得到响应,因为在下一步我将使用返回值来使另一个请求 –