Android的改造要求如何让主线程

我用改装来正确地得到响应改型响应,然后我通过在回应主体对象的反应,而它未能获得在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) {

}

});

}

回答:

移动此线内的onResponse()

Log.d("user", util.getUserInfo().toString()); 

你所得到的用户信息对象太真的,它是空的时候,你是在试图访问它

就像那个

public class Util { 

public interface Callback {

void onResponse(UserInfo info);

}

private UserInfo userInfo;

public UserInfo getUserInfo() {

return userInfo;

}

public void login(final String email, final String password, final Callback callback) {

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();

callback.onResponse(userInfo);

Log.d("user", userInfo.toString());

}

@Override

public void onFailure(Call<UserInfo> call, Throwable t) {

}

});

}

这里是你如何使用它

Util.login("email", "password", new Util.Callback() { 

void onResponse(User info) {

// Update UI

}

});

请注意,这个回调可导致内存泄漏,请确保您留下您的当前活动/片段进行清洁。

以上是 Android的改造要求如何让主线程 的全部内容, 来源链接: utcz.com/qa/258881.html

回到顶部