0

屏幕旋转后,片段顺利保留,但问题是,我在 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);
        }
4

0 回答 0