In meiner Android-Anwendung dauert Dialog erscheint eine Weile. Zu dieser Zeit möchte ich den Fortschrittsdialog zeigen. Ich habe gelernt, dass der Fortschrittsdialog im Thread ausgeführt werden sollte, aber wenn ich einen Thread verwende, gibt es einen Fehler.Android Fortschrittsdialog, während auf den Dialog zu warten, erscheint
Ich erstellte Fortschrittsdialog in oncreate Methode und versuchte, in onclick Methode meiner Knopfes zu zeigen.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = getApplicationContext();
mProgressDialog = new ProgressDialog(context, R.style.StyledDialog);
mProgressDialog.setCanceledOnTouchOutside(false);
Drawable drawable = context.getResources().getDrawable(R.drawable.progress_dialog);
mProgressDialog.setProgressDrawable(drawable);
}
folgende Code ist Onclick Methode ist meine Schaltfläche, die wie in XML-Datei definiert: android:onClick="refList"
public void refList(View v) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
mProgressDialog.show();
}
});
t.start();
if(!refListDialog.isShowing()) {
refListDialog.show();
t.interrupt();
}
}
Dies ist die Ausnahme:
FATAL EXCEPTION: Thread-27305 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:121)
at android.view.ViewRootImpl$ViewRootHandler.<init>(ViewRootImpl.java:3052)
at android.view.ViewRootImpl.<init>(ViewRootImpl.java:3321)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:294)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:226)
at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:151)
at android.app.Dialog.show(Dialog.java:277)
at gcm.b4deploy.com.hesapozeti.MainActivity$2.run(MainActivity.java:196)
at java.lang.Thread.run(Thread.java:856)
Ich bin wirklich stecken und warten Ideen. Danke im Voraus.
Ich weiß nicht, wo Sie das gehört, aber Fortschritt Dialoge sollten nicht in einem Thread aufgerufen werden –