Hallo Leute
ich will per CountDownTimer etwas steuern. Warum nicht Timer? Weil nichts gegen den CountDownTimer spricht, denke ich!?
Es geht darum, dass ich mir als "LernProjekt" vorgenommen habe, eine Art MultiPlayer-Quizz-Programm zu schreiben.
Hier mal die komplette Klasse:
package com.example.quizzz;
import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class ActivityQuestion extends Activity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_question);
View v = findViewById(R.id.txt_questionNumber);
v.setOnClickListener(this);
}
@Override
protected void onDestroy() {
// TODO CountDownTimer cancel();
super.onDestroy();
}
@Override
public void onClick(View arg0) {
// as its the general event, first check the button-id
if (arg0.getId() == R.id.txt_questionNumber) {
new CountDownTimer(30000, 1000) {
TextView v = (TextView) findViewById(R.id.txt_Timer);
public void onTick(long millisUntilFinished) {
v.setText("seconds remaining: " + millisUntilFinished
/ 1000);
}
public void onFinish() {
v.setText("done!");
}
}.start();
}
}
}
Alles anzeigen
Bei TODO sieht man ja schon, was ich plane: Den Timer vernünftig "löschen", sobald die Activity irgendwie nicht mehr aktiv ist.
Nun ist die erste Frage, ob das überhaupt notwendig ist? Vielleicht muss explizit der CountDownTimer ja nicht beendet werden, weil er eben bei Null sich sowieso "zerstört"?
Und wenn nicht, dann die Frage: Warum kann ich nicht per timer().cancel in der Methode onDestroy auf den Timer zugreifen? Wohl weil er innerhalb von onClick erzeugt wurde und außerhalb nicht ansprechbar ist? Na gut.
Wenn ich aber versuche, ein CountDownTimer-Objekt public zu deklarieren, also oben im Konstruktor, kann ich später darauf nicht zurückgreifen und ihn mit den entsprechenden Parametern auslösen.
Aber wie erzeuge ich denn jetzt vernünftig einen CountDownTimer, den ich dann auch von ausserhalb sinnvoll wieder beenden kann?
ich danke euch!
nyrt