Ich habe ein Problem, wo mein Code wird nicht die onTick-Methode angezeigt, und jedes Mal, wenn der Zähler ausgeführt wird, zeigt es einfach den Text "Fertig", wie es sollte, wenn es fertig ist . Es scheint, dass die endTime-Variable nicht an die Timer-Klasse übergeben wird? Jede Hilfe mit dem, was ich vermisse, wäre willkommen.Countdown-Timer wird nicht angezeigt onTick
public class MainActivity extends AppCompatActivity {
private long endTime;
private MyTimer mainTimer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Set up the two number pickers
NumberPicker minutes = (NumberPicker) findViewById(R.id.minutes);
pickerSetup(minutes);
NumberPicker seconds = (NumberPicker) findViewById(R.id.seconds);
pickerSetup(seconds);
mainTimer = new MyTimer(this, endTime, 1000);
}
public void pickerSetup(NumberPicker pickerId){
pickerId.setMaxValue(60);
pickerId.setMinValue(0);
pickerId.setWrapSelectorWheel(true);
}
public void calcTime(View view){
//Get value of Number pickers and convert to milliseconds from minutes and seconds.
NumberPicker minutes = (NumberPicker) findViewById(R.id.minutes);
int selectedMinutes = minutes.getValue() * 60000;
NumberPicker seconds = (NumberPicker) findViewById(R.id.seconds);
int selectedSeconds = seconds.getValue() * 1000;
//Add selected Minutes and seconds together
endTime = selectedMinutes + selectedSeconds;
Log.v("End time = ", String.valueOf(endTime));
mainTimer.start();
}
}
Timer Klasse:
class MyTimer extends CountDownTimer {
private Context mContext;
private TextView mToUpdate;
public MyTimer(Context context, long startTime, long interval) {
super(startTime, interval);
mContext = context;
TextView toUpdate = (TextView) ((Activity)mContext).findViewById(R.id.intervalTimer);
mToUpdate = toUpdate;
}
@Override
public void onTick(long millisUntilFinished) {
int seconds = (int) (millisUntilFinished/1000) % 60;
int minutes = (int) ((millisUntilFinished/(1000 * 60)) % 60);
mToUpdate.setText(String.valueOf(minutes) + ":" + String.valueOf(seconds));
}
@Override
public void onFinish() {
mToUpdate.setText("Done");
}
}