调用getActivity时改进回调中的空指针

时间:2014-09-05 10:58:52

标签: android fragment retrofit

我正在使用改造来从资源中获取数据。但是认为我的架构错了。 所以,我有一个带有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; 如何正确地做到这一点?

2 个答案:

答案 0 :(得分:1)

您的活动在通话过程中已被销毁,当您尝试在回调中获取该活动时,它可能为空。

只需检查activity是否为null,如果null则忽略回调。

答案 1 :(得分:0)

尝试创建自己的Callback类,然后通过构造函数传递Activity或Context。

与此答案类似:https://stackoverflow.com/a/25665521/2399340