Kotlin Basi c Ошибка хронометра, дайте совет новичку - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть 2 кнопки и 1 просмотр текста в моем макете. Я только что тренировался, но увидел некоторые ошибки. Когда пользователи запускают хронометр, они могут неограниченно нажимать на кнопку запуска, как я могу это исправить?

Я действительно новичок ie в разработке android. Можете ли вы дать мне советы, пока я смотрел урок удэми, я мог поймать коды и основы. После этого, когда я пытаюсь построить несколько базовых c проектов для улучшения моих навыков, становится трудно. У меня много синтаксических ошибок. Я знаю, что делать, но я путаю порядок.

Что я могу сделать, чтобы стать лучше?

main_activity.kt


    var runnable : Runnable = Runnable {  }
    var handler : Handler = Handler( )
    var number = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

            //Cronometer have bugs
        // User can click the start button for unlimited

    }

    fun startTime(view: View) {



        runnable = object : Runnable {
            override fun run() {
                number++
                textView2.text = "$number"
                handler.postDelayed(this,1000)

            }

        }

        handler.post(runnable)
    }

    fun stopTime(view:View) {
        handler.removeCallbacks(runnable)
    }


}
```


activity_main.xml
```<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="90dp"
        android:onClick="startTime"
        android:text="START"
        app:layout_constraintBaseline_toBaselineOf="@+id/button4"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="49dp"
        android:layout_marginTop="88dp"
        android:onClick="stopTime"
        android:text="STOP"
        app:layout_constraintStart_toEndOf="@+id/button3"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="180dp"
        android:layout_height="40dp"
        android:layout_marginTop="109dp"
        android:gravity="center"
        android:text="0"
        android:textSize="24sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
 ```

1 Ответ

0 голосов
/ 18 апреля 2020

Ваш вопрос не ясен. Если вы хотите запретить пользователю нажимать на кнопки более одного раза, вы можете отключить их, как только будет обнаружено событие щелчка. Например, в вашем методе startTime вы можете добавить

(view as Button).enabled = false

. Необходимо преобразовать представление в Button, поскольку свойство enabled отсутствует в классе View (оно взято из TextView класс на самом деле, но Button наследует от него).

Затем вам нужно включить его снова, когда вы нажмете кнопку остановки. Вам нужно каким-то образом получить ссылку на кнопку «Пуск», чтобы вы могли получить к ней доступ и включить ее с помощью метода stopTime. Я оставлю это как упражнение для вас;).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...