Android 1.6: “android.view.WindowManager$BadTokenException: Unable to add window — token null is not for an application”

后端 未结 16 1347
滥情空心
滥情空心 2020-11-22 07:46

I\'m trying to open a dialog window, but every time I try to open it it throws this exception:

Uncaught handler: thread main exiting due to uncaught exceptio         


        
16条回答
  •  野性不改
    2020-11-22 08:22

    The best and the safest way to show a 'ProgressDialog' in an AsyncTask, avoiding memory leak problem is to use a 'Handler' with Looper.main().

        private ProgressDialog tProgressDialog;
    

    then in the 'onCreate'

        tProgressDialog = new ProgressDialog(this);
        tProgressDialog.setMessage(getString(R.string.loading));
        tProgressDialog.setIndeterminate(true);
    

    Now you r done with the setup part. Now call 'showProgress()' and 'hideProgress()' in AsyncTask.

        private void showProgress(){
            new Handler(Looper.getMainLooper()){
                @Override
                public void handleMessage(Message msg) {
                    tProgressDialog.show();
                }
            }.sendEmptyMessage(1);
        }
    
        private void hideProgress(){
            new Handler(Looper.getMainLooper()){
                @Override
                public void handleMessage(Message msg) {
                    tProgressDialog.dismiss();
                }
            }.sendEmptyMessage(1);
        }
    

提交回复
热议问题