Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ProgressDialog出现问题_Android_Progressdialog - Fatal编程技术网

Android ProgressDialog出现问题

Android ProgressDialog出现问题,android,progressdialog,Android,Progressdialog,我不理解以下错误: Activity [myActivity] has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4050c3f8 that was originally added here 这是我的密码: private ProgressDialog progression; private Handler handler; private Thread thread; @Override p

我不理解以下错误:

Activity [myActivity] has leaked window
com.android.internal.policy.impl.PhoneWindow$DecorView@4050c3f8 that was
originally added here
这是我的密码:

private ProgressDialog progression;
private Handler handler;
private Thread thread;

@Override
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);

    //Conteneur général
    ui = new RelativeLayout(this);

    progression = ProgressDialog.show(this, "SwissParl", "Init", true);
    handler = new Handler() {
        public void handleMessage(Message msg) {
            progression.dismiss();
        }
    };

    thread = new Thread() {

        public void run() {

            firstMethod();

            SecondOne();

            andTheLast();

            handler.sendEmptyMessage(0);
        }
    };

    thread.start();
    setContentView(ui);
}
显然,问题出在我实例化ProgressDialog的线路上


有什么想法吗?

当显示对话框时活动被破坏时,通常会发生这种情况,例如在显示对话框时旋转或完成活动

尝试在暂停活动时添加“取消”对话框

private ProgressDialog progression;
private Handler handler;
private Thread thread;

@Override
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);

    //Conteneur général
    ui = new RelativeLayout(this);
    setContentView(ui);


    progression = ProgressDialog.show(this, "SwissParl", "Init", true);
    handler = new Handler() {
        public void handleMessage(Message msg) {
            progression.dismiss();
        }
    };

    thread = new Thread() {

        public void run() {

            firstMethod();

            SecondOne();

            andTheLast();

            handler.sendEmptyMessage(0);
        }
    };

    thread.start();
}

在将主视图添加到“活动”之前,您试图显示一个
ProgressDialog
。在启动
ProgressDialog

之前,请使用
setContentView
,我不确定问题出在哪里,但我建议您使用

像这样的

private class MyBackgroundTask extends AsyncTask<Void, Void, Void> {
    private final ProgressDialog dialog = new ProgressDialog(ParentActivity.this);


    @Override
    protected Void doInBackground(Void... param) {

        firstMethod();
        SecondOne();
        andTheLast();

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        if(dialog.isShowing())
            dialog.dismiss();
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        //dialog.setCancelable(false); //depending...
        dialog.setMessage("Please Wait...");
        dialog.show();
    }
}
私有类MyBackgroundTask扩展了AsyncTask{
private final ProgressDialog=新建ProgressDialog(ParentActivity.this);
@凌驾
受保护的Void doInBackground(Void…参数){
第一种方法();
第二个();
和弹性();
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
if(dialog.isShowing())
dialog.dismise();
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
//dialog.setCancelable(false);//取决于。。。
setMessage(“请稍候…”);
dialog.show();
}
}
要执行它,请在
onCreate()内调用
newmybackgroundtask().execute()


这比使用处理程序、线程组合要干净得多…

如果将
setContentView
放在
super.onCreate
之后,该怎么办?这是个好主意,但第二行有问题。。它告诉我ParentActivity无法解析为类型。(我把这个类放在我的MainActivity中)@Greg,显然,我的意思是,用你的父活动替换
ParentActivity
。。。。