Dialog aus Thread aufrufen

W

waltsoft

Neues Mitglied
0
Eigentlich bin ich noch Anfänger, aber ich habe schon einige Apps entwickelt die tolle Stücke spielen. Momentan hänge ich an einem App fest. Es soll aus einem Dialog in der ActivityMain in einer anderen Klasse in einem Thread ein Dialog aufrufen, der bestätigt, ob das Schreiben von Daten in einem Web-File erfolgreich war, oder nicht.
Von der MainActivity aus werden die Methoden "write(string)" und "read()" aufgerufen. Den Code für das Handling mit dem Web habe ich wegen der Komplexität nicht angegebn.
Ich bleibe in dem Code der Klasse "Fileaction" ab der Zeile 68 hängen, weil der AlertDialog.Builder Argumente erwartet, die ich nicht kenne. Ich habe schon alles Mögliche probiert. In der MainActivity funktionieren die Dialoge einwandfrei.
Bitte, wer kann mir helfen?
 

Anhänge

  • Fileaction.txt
    2,7 KB · Aufrufe: 31
  • MainActivity.txt
    4,3 KB · Aufrufe: 41
Hallo,
du brauchst den Kontext der Activity in der Klasse (in dem ausgelagerten Code) denn du nicht hast.
Gebe ihn der Methode readyDialog mit.
"Tipp mache dich schlau was this in Java ist wohin es zeigt."

public void readyDialog(Context context){ .......
AlertDialog.Builder webDialog = new AlertDialog.Builder(context);

Nur wird das auch nicht gehen den du bist in einem Thread und da kannst du keine Bildschirm ausgaben machen. Das musst du im UI Thread machen.
Schaue dir dazu RunOnUIThread an. Stichwort Multi Threading in Java Android.


Ps. Den Context wirst du auch in der "write" Methode brauchen damit du ihn weiter reichen kannst.
Einfacher ist es vielleicht ihn dem Kostrucktor mitzugehen und in einer Klassen Variablen zu speichern.
Dann hast du ihn in allen Methoden zur Verfügung.
 
Zuletzt bearbeitet:
Danke für die schnelle Antwort! Hochachtung an Sie "jogimuc", und das an einem Sonntag
Leider habe ich noch immer Probleme mit dem Thread.
bei "runOnUiThread(new Runnable() {" bekomme ich immer die Fehleranzeige:

error: cannot find symbol
runOnUiThread(new Runnable() {
^
symbol: method runOnUiThread(<anonymous Runnable>)
Vielleicht liegt es an den Importanweisungen: ich habe versucht die Klassen zu impotiern:
import java.lang.Thread;
import java.lang.Runnable;
geht auch nicht. was muß ich machen?

DANKE im Voraus
 

Anhänge

  • Fileaction.txt
    3,1 KB · Aufrufe: 36
Hallo dir fehlt der bezug zur Activity.
Deine Klasse erbt von nichts deshalb ist die Methode nicht vorhanden .

Code:
public void write(Activity act, final String insert){     //write Text to the web-file
        new Thread() {
            public void run() {
                try {
                    act.runOnUiThread(new Runnable() {

Activity in etwa so
Code:
Fileaction fi= new Fileaction();
fi.write(this ,"hallo");
// tihs sollte in dem Moment auf die Activity zeigen. Wenn du in einem Callback bist soltest du das beachten.
fi.write(MainActivity.this ,"hallo");
Beiträge automatisch zusammengeführt:

eines noch
Du erstellst einen Thread dort willst du was speichern.
Aber was machst du? Du gehst in den UI speicherst und gibst etwas auf dem Bildschirm aus.
Da kannst du auch gleich im UI bleiben.
 
Zuletzt bearbeitet:
Hallo jogimuc
Nach einigen Fehlversuchen ist es mir doch noch gelungen dieses Programm zum Laufen zu bringen.
Mir fehlten die Importanweisungen: import android.app.Activity; und import android.content.Context;
Bei "public void write(final Activity act, final String insert){" musste ich noch das "final" ergänzen.
Dann kam im "act.runOnUiThread(new Runnable() {" Rumpf der Aufruf "readyDialog(act);"
Und in der Methode "public void readyDialog(Context context){" die Dialoganzeige mit AlertDialog.Builder mit dem Argument "context".

Super und DANKE, Ich bin sehr zufrieden.
LG Sepp (waltsoft)
 

Ähnliche Themen

Helmut1A
  • Helmut1A
Antworten
7
Aufrufe
1.127
Helmut1A
Helmut1A
R
  • Robby1950
2
Antworten
23
Aufrufe
1.012
Robby1950
R
B
Antworten
6
Aufrufe
1.051
jogimuc
J
Zurück
Oben Unten