我正在使用改造来从资源中获取数据。但是认为我的架构错了。 所以,我有一个带有listview的片段,例如。
在UI设置之后的onCreateView中,我调用API方法(异步)。这将返回我需要设置listview适配器的模型列表。
多数民众赞成在回调
private Callback<List<User>> mUsersCallback = new Callback<List<User>>() {
@Override
public void success(List<User> users, Response response) {
mLoadingLayout.hideLoading();
mPeopleAdapter = new PeopleAdapter(getActivity(), users);
lvPeople.setAdapter(mPeopleAdapter);
}
@Override
public void failure(RetrofitError error) {
mLoadingLayout.hideLoading();
Log.d("get users", error.getUrl() + " " + error.toString());
}
};
在这部分中,我有时会在调用getActivity()时获得NPE; 如何正确地做到这一点?
答案 0 :(得分:1)
您的活动在通话过程中已被销毁,当您尝试在回调中获取该活动时,它可能为空。
只需检查activity是否为null,如果null则忽略回调。
答案 1 :(得分:0)
尝试创建自己的Callback类,然后通过构造函数传递Activity或Context。