[英]Android - Context in ListFragment does'nt work when called from AsyncTask in other Activity
我想刷新ListFragment
的List
。 因此,我在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
也被调用。
所以现在我的问题是,如果我在ListFragment
的onCreate
方法中初始化Context ctx
, ListFragment
得到NullPointerException
。 当我使用ctx = getActivity
在setAdapter
方法中对其进行初始化时,我得到了相同的错误。 我唯一能做的就是用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.