Bir zamanlayıcı sınıfı yazdım. Ve ben onun toString
yöntemini geçersiz kılmak istiyorum. Ama ben toString
yöntemini çağırdığımda, yine de süper uygulamayı döndürür.toString yöntemini geçersiz kılma başarısız oldu
import android.os.Handler;
import android.widget.TextView;
public class Timer implements Comparable<Timer> {
private Handler handler;
private boolean paused;
private TextView text;
private int minutes;
private int seconds;
private final Runnable timerTask = new Runnable() {
@Override
public void run() {
if (!paused) {
seconds++;
if (seconds >= 60) {
seconds = 0;
minutes++;
}
text.setText (toString()); //Here I call the toString
Timer.this.handler.postDelayed (this, 1000);
}
}
};
//Here is the toString method, anything wrong?
@Override
public String toString() {
if (Integer.toString (seconds).length() == 1) {
return minutes + ":0" + seconds;
} else {
return minutes + ":" + seconds;
}
}
public void startTimer() {
paused = false;
handler.postDelayed (timerTask, 1000);
}
public void stopTimer() {
paused = true;
}
public void resetTimer() {
stopTimer();
minutes = 0;
seconds = 0;
text.setText (toString()); //Here is another call
}
public Timer (TextView text) {
this.text = text;
handler = new Handler();
}
@Override
public int compareTo(Timer another) {
int compareMinutes = ((Integer)minutes).compareTo (another.minutes);
if (compareMinutes != 0) {
return compareMinutes;
}
return ((Integer)seconds).compareTo (another.seconds);
}
}
Metin görünümün metin Timer
sınıfın tam adı olduğunu görebilirsiniz: (sınıfın tam nitelikli ad)
İşte benim zamanlayıcı sınıftır. Hatta this.toString
'u denedim, ama işe yaramıyor.
ekran değeri tarafından basılan "Integer.toString (saniye) .length":
Çıktı:
İşte fark göstermek için kısa ama tam konsol uygulaması var. böylece "Log.i (" value "," "+ Integer.toString (saniye) .length);" ?? –