屏幕旋转后,片段顺利保留,但问题是,我在 listView 上生成项目的代码再次被调用,这使得前一个列表与相同的项目翻了一番。
我做了什么,我尝试检查是否retainInstance
是,true
然后我将返回视图。然后我得到11-15 19:18:52.097: E/AndroidRuntime(1620): java.lang.StackOverflowError
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(this.getRetainInstance()){
return this.onCreateView(inflater, container, savedInstanceState);
}else{
this.setRetainInstance(true);
/** CODE FOR GENERATING LISTVIEW **/
return view;
}
更新
if(mDrawerList.get().getCount()==0){
/*RUN AsyncTask*/
}
列表视图的 AsyncTask
List<Menu> items;
@Override
protected void onPreExecute() {
super.onPreExecute();
/*GET FROM THE DATABASE*/
}
@Override
protected String doInBackground(String... params) {
if(items.size() == 0){
/*PREPARE DATA AND PUT IT IN ARRAYLIST*/
}
}
@Override
protected void onPostExecute(String file_url) {
super.onPostExecute(file_url);
/*NEW CUSTOM ADAPTER*/
mDrawerList.get().setAdapter(adapter);
}