繁体   English   中英

Android-从其他活动中的AsyncTask调用时,ListFragment中的上下文不起作用

[英]Android - Context in ListFragment does'nt work when called from AsyncTask in other Activity

我想刷新ListFragmentList 因此,我在ListFragment创建了一个方法:

public void setAdapter(List<String> valueList) {
    ArrayAdapter adapter = new ArrayAdapter<String>(ctx, android.R.layout.simple_list_item_1, valueList);
    setListAdapter(adapter);
    adapter.notifyDataSetChanged();
}

在我的Activity我有一个AsyncTask ,在其中我在onPostExecute调用了上面的方法:

    @Override
    protected void onPostExecute(ArrayList<String> valueList) {
        OtherClass otherClasst = new OtherClass();

        otherclass.setAdapter(valueList);
    }

一切都应该正常工作。 valueList不为空或类似的东西,并且onPostExecute也被调用。

所以现在我的问题是,如果我在ListFragmentonCreate方法中初始化Context ctxListFragment得到NullPointerException 当我使用ctx = getActivitysetAdapter方法中对其进行初始化时,我得到了相同的错误。 我唯一能做的就是用AsyncTask获取类的context ,但是应用程序中什么也没有显示。

那么我该如何工作呢?

由于您是从AsyncTask onPostExecute调用setAdapter的,因此您的activity可能已被破坏,这就是为什么通过调用getActivity获得null上下文的原因。

setAdapter外部初始化adapter (使其全局),可以在Fragment onCreateView方法中,如下所示:

adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, valueList);

AsyncTask onPostExecute只需更新valueList并调用adapter.notifyDataSetChanged()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM