在屏幕旋转之后,片段被平滑地保留但问题是,我的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);
}