Android Dialog wird nicht sofort angezeigt

AquaBall

Top Contributor
Meine Activity startet über eine Button eine andere Activity, läuft wunderbar.

Aber wenn ich davor noch einen Dialog öffnen will, dann erscheint der erst im letzten Augenblick und wird sofort von der Activity überlagert. Ich komm gar nicht dazu, etwas auszuwählen.

Nach dem ich Activity 2 wieder schließe wartet der Dialog immer noch geduldig.

Was mach ich falsch?
 
Java:
        AlertDialog.Builder dialog = new Builder(this);
        dialog.setTitle("Wähle einen Text");
        dialog.setItems(mTextList, new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int which){
                auswahl = mTextList[which];
            }
        });
        dialog.show();                      // Dialog SOLLTE! angezeigt werden
        Editor edit = preferences.edit();   // Auswahl als preferece speichern 
        edit.putString("Auswahl",auswahl);
        edit.commit();
        try
        {  Thread.currentThread();
            Thread.sleep(3000);              // Pause (nur für Test) nützt auch nichts, Dialog kommt nicht!
        }
        catch (InterruptedException e) { }
        
        Intent intent = new Intent( this, NeueActivity.class );
        //TODO !!!!!!!!!!!!!  activity wartet Dialog nicht ab !!!!!!!!!!!!!
        startActivity(intent);
.
 
Zuletzt bearbeitet:
Ist klar, wenn du nämlich den UI-Thread schlafen legst, tut sich auch im Dialog nichts. Du musst hier auf den Benutzer reagieren und nicht sequentiell aufschreiben was passieren soll.

Starte die neue Activity einfach nach dem der Benutzer ein Item verwendet hat. Wenn der Dialog sich schließen soll nachdem der Benutzer ein Item ausgewählt hat funktioniert das so:

Java:
dialog.setItems(mTextList, new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int which){
                auswahl = mTextList[which]; // falls Instanzvariable nicht mehr nötig würde ich sie entfernen
                Editor edit = preferences.edit();   // Auswahl als preferece speichern 
                edit.putString("Auswahl",auswahl);
                edit.commit();
                dialog.dismiss();
                Intent intent = new Intent( this, NeueActivity.class );
                startActivity(intent);                
            }
        });

Wenn du den Dialog anders schließen möchtest, tu das und füg einen Dismiss-Listener hinzu auf den du reagieren möchtest.
 
Tja, in der Tat bin ich nicht gewohnt, dass das ja einen eigenen thread startet.

Zur Zeit meines ersten Programmes gab's so was noch gar nicht.

Danke für die Info!
 
Interessant dass sich das Android-Framework derart geändert hat bzw. dass es so seltsam designed war am Anfang.

Nichts für ungut aber hier im Unterforum sind vor allem Anfänger unterwegs außer ein paar Ausnahmen wie Tomate_Salat, also nichts für ungut ;-)
 
Interessant dass sich das Android-Framework derart geändert hat bzw. dass es so seltsam designed war am Anfang.
AquaBall meint ja, schon programmiert zu haben, als die meisten hier noch nicht lebten. - Damit war sein erstes Programm wohl nicht in Java geschrieben, was ja erst 1995 veröffentlicht wurde. Andorid hat er mit seiner Aussage bzgl. der Threads daher sicher nicht gemeint.

Was hast du bisher denn überwiegend programmiert AquaBall?
 
Du möchtest ein paar private Daten?

Meine ersten Programm wurde in diesem Stil geschrieben, (wo bei "geschrieben" schon der falsche Audruck ist):
Code:
      PROGRAM TEST 
C                        
C     MEIN ERSTES PROGRAMM
C          
      DO 100 I = 1, 3
      WRITE (*,*) 'HALLO WELT!'
 100  CONTINUE            
      END

Und mein erstes kommerzielles Programm (ca. 5-7 Jahre danach):
Code:
 program Hallo(output);
 begin
  writeln('Hallo Welt');
 end.
 
Der Stil des kommerziellen Programmes drüfte duch die Sprache Pascal gefordert wurden sein.
(zumindest glaube ich mich daran erinnern zu können, dass ich so oder so ähnlich in Turbo Pascal programmiert habe - ist aber schon eine kleine Weile her... 😉

Beim ersten Programm muss ich aber raten: Fortran?
 

Zurück
Oben