2017-05-29 6 views
1

Wie neue Aktivität auf progressdialog Dimiss zu öffnen?ProgressDialog entlassen öffnen neue Aktivität

Hier ist mein Teil Code:

  @Override 
     public void onClick(View v) { 
      progressDoalog = new ProgressDialog(Hack.this); 
      progressDoalog.setMax(100); 
      progressDoalog.setMessage("Its loading...."); 
      progressDoalog.setTitle("ProgressDialog bar example"); 
      progressDoalog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
      progressDoalog.show(); 
      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        try { 
         while (progressDoalog.getProgress() <= progressDoalog 
           .getMax()) { 
          Thread.sleep(200); 
          handle.sendMessage(handle.obtainMessage()); 
          if (progressDoalog.getProgress() == progressDoalog 
            .getMax()) { 
           progressDoalog.dismiss(); 
          } 
         } 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }).start(); 
     } 

     Handler handle = new Handler() { 
      @Override 
      public void handleMessage(Message msg) { 
       super.handleMessage(msg); 
       progressDoalog.incrementProgressBy(1); 
      } 
     }; 
    }); 
} 

Bitte helfen Sie mir Jungen. Ich denke, dass dies die einzige Lösung ist, um die Aktivität nach dem Fortschrittdialog zu öffnen.

+0

Mögliche Duplikat [Können Sie ein Ereignis ausgelöst, wenn Android Dialog des Feldes verwiesen ?] (https://stackoverflow.com/questions/6203720/can-you-fire-an-event-when-android-dialog-is-dismissed) – EKN

Antwort

1

Fügen Sie einfach:

progressDoalog.setOnDismissListener(new DialogInterface.OnDismissListener(){ 
      @Override 
      public void onDismiss(DialogInterface dialog) { 
       //Launch your activity 
      } 
     }); 

Es ist ein einfacher Zuhörer, die aufgerufen wird, wenn der Dialog

+0

Ich habe es versucht: https://pastebin.com/3WXrkEH4 und Meine App stürzt ab –

+0

Nullprüfung ist erforderlich, bevor progressDoalog.setOnDismissListener() – EKN

+0

@EKN Entschuldigung ich bin Neuling, was meinst du? Könntest du es mir auf meinem Skript zeigen? –

0

entlassen können Sie verwenden ein AsyncTask

Es gibt drei wichtige Methoden in AsyncTask außer Kraft zu setzen.

  1. doInBackground: das ist, wo das Fleisch Ihrer Hintergrundverarbeitung auftreten.
  2. OnPreExecute: zeigen Sie Ihre ProgressDialog hier (showdialog)
  3. OnPostExecute: verstecken Sie Ihre ProgressDialog hier (removeDialog oder dismissDialog)

Wenn Sie Ihre AsyncTask Unterklasse als eine innere Klasse Ihrer Tätigkeit machen, Anschließend können Sie in Ihrer AsyncActivity die Framework-Methoden showDialog, abdDialog und removeDialog aufrufen.

Hier ist eine Beispielimplementierung von AsyncTask:

class ProgressTask extends AsyncTask<String, Integer, Boolean> { 
    @Override 
    protected Boolean doInBackground(String... params) { 
    try { 
     Thread.sleep(4000); // Do your real work here 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    return Boolean.TRUE; // Return your real result here 
    } 
    @Override 
    protected void onPreExecute() { 
    showDialog(AUTHORIZING_DIALOG); 
    } 
    @Override 
    protected void onPostExecute(Boolean result) { 
    // result is the value returned from doInBackground 
    removeDialog(AUTHORIZING_DIALOG); 
    Intent i = new Intent(this, LandingActivity.class); 
    startActivity(i); 
    } 
} 
0

@Markus Malenki Code unten entnehmen Sie bitte

if(progressDoalog!=null && progressDoalog.isShowing()){ 
    progressDoalog.setOnDismissListener(new 
    DialogInterface.OnDismissListener(){ 
    @Override 
    public void onDismiss(DialogInterface dialog) { 
    //Launch your activity 
    } 
}); 

}

+0

Ich habe ein Problem. isShowing kann dieses Symbol nicht auflösen –

+0

Überprüfen Sie, ob Sie importieren android.app.ProgressDialog; in Ihrer Klasse – EKN

+0

Ich habe eine kleine Änderung in meiner Antwort gemacht, tatsächlich isShowing() ist eine Funktion, ich habe vergessen, Funktionsparameter entlang IsShowing, Entschuldigung für den Fehler hinzuzufügen. – EKN

Verwandte Themen