0

嗨,我的应用程序正在逼近。

错误 - 视图未附加到窗口管理器。

//asynctask for groupnames
    class GroupDataLoad extends AsyncTask<Void, Void, Void>{

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();

            mCustomProgressDialog = CustomProgressDialog.createDialog(
                    UserMenuActivity.this, "", "");

            mCustomProgressDialog.show();   
            mCustomProgressDialog.setCancelable(false); 
        }

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub

            dbHelper = new DatabaseHelper(UserMenuActivity.this);
            //getting the group list
            mXMPPConn.getContactList();

            ParseValues.parsedGroupList.clear();
            APIVariables apiVariables = new APIVariables();
            ParseValues.getGroupList(apiVariables.getGroupList("abc.com"));

            int size = ParseValues.parsedGroupList.size();
            for(int i=0;i<size;i++){
                String groupName = ParseValues.parsedGroupList.get(i).getGroup_name();
                if(CGMStaticVariable.CommonConnection.isConnected())
                {
                    createRoom(groupName, CGMStaticVariable.CommonConnection);
                }
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            setExpandableListView();
            mCustomProgressDialog.dismiss();    
        }
    }

加载开始时,我通过单击状态栏中的通知来更改前台页面,当我单击 BACK 按钮再次进入相同的活动时,它崩溃说 - “视图未附加到窗口管理器”

我无法弄清楚问题到底是什么

谢谢

4

1 回答 1

0

我想我当时做了其他事情,但如果我现在必须修复它,我会在启动异步任务时在活动中创建进度对话框。我会在活动中保留对对话框的引用,并在任务完成后将其关闭。为了告诉活动任务已经完成:

  1. 创建接口
  2. 使活动实现接口
  3. 使异步任务接收并保持对实现接口的对象的一周引用
  4. 将活动(“this”)传递给任务
  5. 在 onPostExecute() 调用传递对象的接口方法
  6. 在该方法的实现中,销毁/关闭对话框

另外,如果Activity在任务完成之前被销毁,对话框也会被销毁。使用弱引用很重要,这样在可能很长的任务完成之前不会引用活动。

于 2013-03-04T10:45:54.143 回答