我想刷新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
,我会得到一个NullPointerException
.当我用ctx = getActivity
在setAdapter
方法中初始化它时,我得到了同样的错误。我唯一能做的就是用AsyncTask
获取类的context
,但是应用程序中没有显示任何内容。
那么我该如何让它工作呢?
由于您是从AsyncTask
onPostExecute
调用setAdapter
,那么您的activity
可能已被破坏,这可能就是您通过调用getActivity
来获取null
上下文的原因。
在setAdapter
之外初始化adapter
(使其全局),可能是onCreateView
Fragment
的方法如下:
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, valueList);
onPostExecute
AsyncTask
只是更新valueList
并致电adapter.notifyDataSetChanged()