Создайте несколько наборов кнопок «плюс» и «минус» с помощью TextView на одной странице приложения (Kotlin) - PullRequest
0 голосов
/ 20 марта 2020

У меня есть два элемента управления, которые я могу увеличить или уменьшить целое число. Я нажимаю либо на первый, либо на второй набор кнопок «плюс» и «минус», несмотря на то, что они являются отдельными функциями, на обоих выходах будут отображаться целые числа. Например, если я нажму кнопку «плюс» и «минус» для integer_number_1, он отобразит числа как на выходах integer_number_1, так и на integer_number_2 / TextView.

Как это исправить ??? У меня так много разных способов, и ни один из них не сработал.

screenshot

Вот мой раздел 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">

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="56dp"
        android:layout_marginBottom="549dp"
        android:orientation="horizontal"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <Button
            android:id="@+id/decrease_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="-" />

        <TextView
            android:id="@+id/integer_number_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="40dp"
            android:layout_marginTop="16dp"
            android:layout_marginRight="40dp"
            android:layout_marginBottom="16dp"
            android:inputType="number"
            android:text="0"
            android:textSize="70sp"
            android:textStyle="bold" />

        <Button
            android:id="@+id/increase_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="+" />


    </LinearLayout>

    <Button
        android:id="@+id/decrease_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/integer_number_2"
        app:layout_constraintHorizontal_bias="0.513"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout"
        app:layout_constraintVertical_bias="0.317" />

    <Button
        android:id="@+id/increase_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="+"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.579"
        app:layout_constraintStart_toEndOf="@+id/integer_number_2"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout"
        app:layout_constraintVertical_bias="0.313" />

    <TextView
        android:id="@+id/integer_number_2"
        android:layout_width="46dp"
        android:layout_height="99dp"
        android:layout_marginStart="46dp"
        android:layout_marginLeft="46dp"
        android:inputType="number"
        android:text="0"
        android:textSize="70sp"
        android:textStyle="bold"

        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.426"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout"
        app:layout_constraintVertical_bias="0.297" />


</androidx.constraintlayout.widget.ConstraintLayout>

А вот мой файл kt:

package com.example.plus_and_minus_input

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

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

    increase_1.setOnClickListener { increaseInteger1() }
    decrease_1.setOnClickListener { decreaseInteger1() }


    increase_2.setOnClickListener { increaseInteger2() }
    decrease_2.setOnClickListener { decreaseInteger2() }


}

fun increaseInteger1() {
    display(integer_number_1.text.toString().toInt() + 1)
}

fun decreaseInteger1() {
    display(integer_number_1.text.toString().toInt() - 1)
}


fun increaseInteger2() {
    display(integer_number_2.text.toString().toInt() + 1)
}

fun decreaseInteger2() {
    display(integer_number_2.text.toString().toInt() - 1)
}

private fun display(number: Int) {
    integer_number_1.setText("$number")
    integer_number_2.setText("$number")
}

}

1 Ответ

1 голос
/ 20 марта 2020

Я думаю, вам нужно разделить следующие методы отображения:

private fun display(number: Int) {
    integer_number_1.setText("$number")
    integer_number_2.setText("$number")
}

на

private fun display_number_1(number: Int) {
    integer_number_1.setText("$number")
}

и

private fun display_number_2(number: Int) {
    integer_number_2.setText("$number")
}
...