Custom Dialog mit Timer aufrufen

  • 4 Antworten
  • Letztes Antwortdatum
C

coolz3ro

Neues Mitglied
0
Hallo!
Ich habe ein Problem mit dem Auftrufen eines Custom Dialogs. Der Dialog soll aufgerufen werden, wenn ein Counter abgelaufen ist. Leider funktioniert es nicht, wenn ich den entsprechenden Quellcode für das Anzeigen des Dialoges einfach in die onFinish-Methode des Counters rein schreibe. Hoffe ihr könnt weiter helfen! Das ganze steht in der OnCreate - Methode!

Eclipse gibt mir aus:
"The constructor Dialog(new CountDownTimer(){}) is undefined"

HTML:
final TextView myCounter = (TextView)findViewById(R.id.mycounter);
new CountDownTimer(50000, 1000) {   

@Override
public void onFinish() {  

myCounter.setText("Die Zeit ist vorbei!"); 

Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.customdialog);
dialog.setTitle("Testdialog");
TextView textView1 = (TextView) dialog.findViewById(R.id.textView1);
textView1.setText("Test " + testvariable1 + " Test " + (Testarray.length));
                        
Button button1 = (Button) dialog.findViewById(R.id.zurueckbutton);
button1.setOnClickListener(new View.OnClickListener(){

public void onClick(View v) {
Intent k = new Intent(v.getContext(), hauptmenue.class);
startActivity(k);
                                
}
});
                        
Button button2 = (Button) dialog.findViewById(R.id.wiederholenbutton);
button2.setOnClickListener(new View.OnClickListener(){

Intent z = new Intent(v.getContext(), test.class);
startActivity(z);
                                
}
});
                        
ImageView image = (ImageView) dialog.findViewById(R.id.imageView1);
image.setImageResource(R.drawable.gut1);
dialog.show();
 
}

@Override
public void onTick(long millisUntilFinished) { 
   
myCounter.setText("Verbleibende Zeit: " + String.valueOf(millisUntilFinished / 1000) + " Sek.");
}

}.start();
 
Keine Ideen...?
 
hier im Forum wurde erst letztens ein ähnliches Problem hehandelt ...

Dialoge ruft man grundsätzlich mit einer "show()" Methode auf. Und die Fehlermeldung besagt das es den Konstruktor anscheinend nicht gibt bzw eclipse ihn nicht sieht/kennt. Vielleicht mal schauen ob er überhaupt existiert und wenn ja mal schauen ob er für andere Klassen überhaupt zur Verfügung steht.
 
Du übergibst den falschen Context, vermute ich zumindest:
Code:
Dialog dialog = new Dialog(this);

Das this bezieht sich in deinem Fall auf das CountDownTimer-Objekt, der Dialog will aber einen Activity-Context haben. Also mußt du new Dialog(DeineActivity.this) benutzen, dann könnte es klappen.
 
  • Danke
Reaktionen: coolz3ro
Madlip schrieb:
Dialoge ruft man grundsätzlich mit einer "show()" Methode auf.

Habe den Dialog auch mit "dialog.show();" aufgerufen. Schau mal weiter unten im Quellcode.

Madlip schrieb:
Und die Fehlermeldung besagt das es den Konstruktor anscheinend nicht gibt bzw eclipse ihn nicht sieht/kennt. Vielleicht mal schauen ob er überhaupt existiert und wenn ja mal schauen ob er für andere Klassen überhaupt zur Verfügung steht.

"Dialog" ist doch eine vorgefertigte Klasse, für die ich selber gar keinen Konstruktor mehr schreiben musste. Das Einzige, was sein kann ist, dass man dem Konstruktor dann nciht das übergibt, was er haben will, oder sehe ich das falsch?
Damit wäre ich auch schon beim Beitrag von Tom299. Der Hinweis war schonmal sehr gut! Zumindest zeigt Eclipse nun keinen Fehler mehr an und ich kann das Programm debuggen. Leider stoppt das Programm und es gibt einen Fehler, sobald der Timer abgelaufen ist. In der Finish-Methode stimmt also immernoch etwas nicht.

Habe exakt den gleichen Quellcode schon an anderer Stelle verwandt, um einen Dialog aufzurufen und dort hat es einwandtfrei funktioniert. Allerdings habe ich den Quellcode für den Dialog dort auch außerhalb der OnCreate-Methode verwandt. Hier steht der Code ja in der OnCreate-Methode, wie ich oben schon schrieb. Macht das irgend einen Unterschied?

Der ursprüngliche Beitrag von 19:39 Uhr wurde um 19:50 Uhr ergänzt:

Madlip schrieb:
hier im Forum wurde erst letztens ein ähnliches Problem hehandelt ...

Habe gerade auch mal in der Suche nach dem alten Eintrag gesucht, aber leider nichts passendes gefunden. Unter welchem Stichwort kann ich den Eintrag denn finden?

Der ursprüngliche Beitrag von 19:50 Uhr wurde um 20:03 Uhr ergänzt:

Das Problem hat sich gelöst!! :) Nachdem ich den Fehler behoben hatte, auf den Tom mich aufmerksam gemacht hat, lag es nurnoch daran, dass ich das Array nur deklariert, aber nicht initialisiert hatte und somit die Methode "length()" einen Fehler produziert hat. Also nochmals vielen Dank!!
 
Zurück
Oben Unten