Hi,
wenn ich versuche folgenden Code zu starten:
Und dann den button drücke erhalte ich folgende Errormeldung:
Und ich wollte fragen, was ich im Code falsch gemacht habe, dass ich diese Errormeldung bekomme.
Danke für alle Ideen und Lösungen
wenn ich versuche folgenden Code zu starten:
Java:
public class MainActivity extends AppCompatActivity {
public EditText timer;
public Button start;
public boolean pressed;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pressed = false;
timer = findViewById(R.id.timer);
start = findViewById(R.id.button);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pressed = !pressed;
start.setText(updatebuttonText(pressed));
int secs = 0;
while (pressed){
Timer time = new Timer();
try {
time.wait(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
secs += 1;
if(secs%10 == 0 && !(secs%50 == 0)){
Toast.makeText(MainActivity.this, "10s", Toast.LENGTH_SHORT).show();
}else if(secs%50 == 0){
Toast.makeText(MainActivity.this, "50s", Toast.LENGTH_SHORT).show();
}
timer.setText(updateTimerText(secs));
}
}
});
}
public String updateTimerText(int secs){
int hours;
int mins;
int sec;
if (secs < 60){
return String.valueOf(secs);
} else if (secs < 60 * 60) {
mins = secs % 60;
sec = secs - (mins*60);
return "00:"+mins+":"+sec;
} else {
hours = secs % (60*60);
mins = (secs - (60*hours)) % 60;
sec = secs - (mins*60);
return hours+":"+mins+":"+sec;
}
}
public String updatebuttonText(boolean pressed){
if(pressed){
return "Stop";
}else{
return "Start";
}
}
Und dann den button drücke erhalte ich folgende Errormeldung:
Code:
Process: com.example.sportcounttimer, PID: 29640
java.lang.IllegalMonitorStateException: object not locked by thread before wait()
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:442)
at com.example.sportcounttimer.MainActivity$1.onClick(MainActivity.java:39)
Und ich wollte fragen, was ich im Code falsch gemacht habe, dass ich diese Errormeldung bekomme.
Danke für alle Ideen und Lösungen