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
。。。。