Dialog kommt nicht

A

AquaBall

Fortgeschrittenes Mitglied
2
Auf eine Botton in meiner Activity soll folgendes passieren:

1) Dialog für Textauswahl erscheinen
2) nächst Activity starten.

Aber was auch immer ich versuche, die Activity startet noch bevor ich aus dem Dialog auswählen kann.
Sogar wennn ich 10 sec Pause NACH dem Dialog einbaue erscheint der Dialog 10 sec später!

Code:
        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 anzeigen

        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
        }
        catch (InterruptedException e) { }
        
        Intent intent = new Intent( this, NeueActivity.class );
        //TODO !!!!!!!!!!!!!  activity wartet Dialog nicht ab !!!!!!!!!!!!!
        startActivity(intent);
Warum erscheint der Dialog trotz Pause erst unmittelbar vor der Activity und wird von ihr sofort überlagert?
(Warum hält die Ausführung nicht an??)
Irgendwas habe ich noch nicht durchschaut.
 
Bei einem Dialog wird der Thread nicht angehalten, was auch unlogisch wäre, weil man das UI nur im MainThread manipulieren kann und würde jetzt der Thread pausieren, würde der MainThread stehen bleiben.

Du müsstest die neue Activity einfach im onClickListener starten. Dann hast du das Problem nicht mehr :)
 
  • Danke
Reaktionen: AquaBall
Cool! Danke.
Funktioniert perfekt, und die Begründung klingt auch logisch!
(Heißt das, aber dass ich nie mit einem Dialog Daten eingeben kann?)


Danke an einen echten Profi.
Kannst du mir da auch evtl helfen?
AquaBall schrieb:
mehrere Bilder nebeneinander darstellen.
 
Natürlich kann man mit einem Dialog Daten eingeben. Man kann das ganze auch etwas tricky machen, z.B. habe ich oft einen Background Thread, wo ich eine ja/nein Antwort brauche. Da öffne ich im UI Thread den Dialog und lasse den Background Thread warten (über einen Monitor mit wait() und notify() ). Wenn der Nutzer nun was antippt, geht der Background Thread weiter und hat seinen Boolean Wert.

Sieh dir das mal an: Java ist auch eine Insel – 9.9 Synchronisation über Warten und Benachrichtigen

Das mit den Bildern versteh ich gerade nicht ganz.
 
Das mit den Bildern:
AquaBall schrieb:
Ich habe mehrere (kleine) Bilder / Icons, die dynamisch angezeigt werden.
Bei textEdits gelingt es mir problemlos, sie nebeneinander darzustellen.

Code:
TableRow screenZeile = new TableRow(this);
hauptScreen.addView(screenZeile, editParams);
screenZeile.addView(editText1, screenZeile );
screenZeile.addView(editText2, screenZeile );
Bei den Bildern gelingt mir das aber im TableRow nicht.
Die Anzeige bleibt leer, statt zwei Bilder nebeneinder.

Folgendes funktioniert (aus mir nicht ersichtlichen Gründen) nicht:
Code:
TableRow screenZeile = new TableRow(this); 
ImageView image= new ImageView(this); image.setImageBitmap(imgBild); 
screenZeile .addView(image,  new 
     LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,  LayoutParams.WRAP_CONTENT));
Das Bild erscheint einfach nicht.
 
Nein kann ich dir nicht helfen. Ich empfehle dir, die Layouts mittels XML anzulegen, da hast du auch sofort ein visuelles Feedback.
 
Statisch geht nicht, weil die Daten nach Eingabe aus dem WWW geholt werden.
Trotzdem danke.
 

Ähnliche Themen

SaniMatthias
Antworten
19
Aufrufe
871
swa00
swa00
W
  • waltsoft
Antworten
4
Aufrufe
930
waltsoft
W
O
Antworten
15
Aufrufe
2.871
ORHUX
O
Zurück
Oben Unten