Auf Thema antworten

Hi,

wenn ich versuche folgenden Code zu starten:

[CODE=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";

        }

    }[/CODE]


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)[/CODE]


Und ich wollte fragen, was ich im Code falsch gemacht habe, dass ich diese Errormeldung bekomme.


Danke für alle Ideen und Lösungen



Oben