Android - 在其他Activity中从AsyncTask调用时,ListFragment中的Context功能无效

时间:2016-04-20 05:34:02

标签: java android android-asynctask nullpointerexception android-context

我想刷新List的{​​{1}}。因此,我在ListFragment

中创建了一个方法
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的{​​{1}}方法中初始化Context ctx,我会得到onCreate。当我使用ListFragment在我的NullPointerException方法中对其进行初始化时,我得到了同样的错误。我唯一能做的就是用setAdapter获取类的ctx = getActivity,但是应用程序中没有显示任何内容。

那么我该如何让它发挥作用呢?

1 个答案:

答案 0 :(得分:1)

由于您从setAdapter的{​​{1}}致电onPostExecute,因此您的AsyncTask可能已被销毁,可能就是您获得{{1}的原因通过调用activity来创建上下文。

null之外初始化getActivity(将其设为全局),可能采用此adapter的{​​{1}}方法:

setAdapter

onCreateView的{​​{1}}只更新Fragment并致电adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, valueList);