setOnClickListener не работает андроид котлин - PullRequest
0 голосов
/ 15 мая 2018

Я изучаю android и kotlin, и я создаю приложение для практики.Когда я запускаю свой код, кнопка не работает, и я не знаю, почему или что я делаю неправильно / забыл добавить.Любая помощь приветствуется!

Мой код xml:

 <Button
    android:id="@+id/solveBtn"
    android:layout_width="113dp"
    android:layout_height="65dp"
    android:layout_marginBottom="184dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text="Solve" 
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.501"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/NumInput" />

и мой код kt: class MainActivity: AppCompatActivity () {

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

    var num = NumInput.inputType.toInt()
    var answer = ansText

    fun solver (num1 : Int) {
        var div = 1
        var count = 0
        if ((num1 > 0) && (num1 < 2)){
            println("$num1 is a prime number!")
        } else{
            while (div < num1){
                if ((num1 % div) == 0){
                    div++
                    count++
                }else {
                    div++
                }
            }
        }
        if (count == 0) {
            answer.text = "$num1 is not a prime number"
        } else {
            answer.text = "$num1 is a prime number"
        }

    solveBtn.setOnClickListener{
        println("Hello")
        answer.clearComposingText()
        solver(num)
        }
    }
}

}

Еще раз спасибо за любую помощь!

Ответы [ 3 ]

0 голосов
/ 15 мая 2018

Вам нужно настроить setOnClickListener снаружи solver(..)

fun solver (num1 : Int) {
    var div = 1
    var count = 0
    if ((num1 > 0) && (num1 < 2)){
        println("$num1 is a prime number!")
    } else{
        while (div < num1){
            if ((num1 % div) == 0){
                div++
                count++
            }else {
                div++
            }
        }
    }
    if (count == 0) {
        answer.text = "$num1 is not a prime number"
    } else {
        answer.text = "$num1 is a prime number"
    }
}

solveBtn.setOnClickListener{
    println("Hello")
    answer.clearComposingText()
    solver(num)
    }
}
0 голосов
/ 23 мая 2018

Пожалуйста, используйте как это:

 backArrow.setOnClickListener {
            finish()
        }
0 голосов
/ 15 мая 2018

Ваш solveBtn.setOnClickListener находится внутри функции solver, которая никогда не вызывается. Просто поставьте setOnClickListener на одну фигурную скобку ниже.

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