应用程序在访问编辑文本时停止响应



我是Android Studio和Java的新手。我想从EditText中获取一个值并将其转换为Integer并在onClickListener方法中将其设置为自身,但是当我按下按钮(用于减少和/或增加EditText值的按钮,如 btnIncbtnDec 所述(后,它一直停止响应在我的手机上调试。我在模拟器上调试,它也不起作用。创建所有内容后,我在 protected void onCreate 方法中声明了一个final EditTextfinal Button

这是我的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Button btnCalculate = findViewById(R.id.btn_calc);
    final EditText edtPrime = findViewById(R.id.EditText_numMaxPrime);
    final Button btnInc = findViewById(R.id.btn_incNum);
    final Button btnDec = findViewById(R.id.btn_decNum);
    btnDec.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Integer number = Integer.parseInt(edtPrime.getText().toString());
            number--;
            edtPrime.setText(number, TextView.BufferType.EDITABLE);
        }
    });
    btnInc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Integer number = Integer.parseInt(edtPrime.getText().toString());
            number++;
            edtPrime.setText(number, TextView.BufferType.EDITABLE);
        }
    });
    btnCalculate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //Sieve(Integer.parseInt(edtPrime.getText().toString()));
        }
    });
}

我进口了android.widget.Buttonandroid.widget.EditText.

这是我的 XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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="karuntodroid.sieveoferatosthenes.MainActivity">
    <TextView
        android:id="@+id/TextView_askPrime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginTop="8dp"
        android:text="Enter the prime number up to:"
        app:layout_constraintBottom_toBottomOf="@+id/EditText_numMaxPrime"
        app:layout_constraintHorizontal_bias="0.051"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="@+id/EditText_numMaxPrime"
        app:layout_constraintVertical_bias="0.032" />
    <EditText
        android:id="@+id/EditText_numMaxPrime"
        android:layout_width="60dp"
        android:layout_height="40dp"
        android:layout_marginEnd="8dp"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:hint="100"
        android:inputType="number"
        app:layout_constraintEnd_toStartOf="@+id/btn_incNum"
        app:layout_constraintTop_toTopOf="parent" />
    <Button
        android:id="@+id/btn_incNum"
        android:layout_width="40dp"
        android:layout_height="0dp"
        android:layout_marginEnd="8dp"
        android:layout_marginTop="8dp"
        android:text="+"
        app:layout_constraintEnd_toStartOf="@+id/btn_decNum"
        app:layout_constraintTop_toTopOf="parent" />
    <Button
        android:id="@+id/btn_decNum"
        android:layout_width="40dp"
        android:layout_height="0dp"
        android:layout_marginEnd="8dp"
        android:layout_marginTop="8dp"
        android:text="-"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <Button
        android:id="@+id/btn_calc"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="CALCULATE"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/TextView_askPrime" />
    <android.support.constraint.ConstraintLayout
        android:layout_width="0dp"
        android:layout_height="407dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent">
    <TextView
        android:id="@+id/TextView_numbersare"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:text="Numbers are:"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <TextView
        android:id="@+id/TextView_numbers"
        android:layout_width="350dp"
        android:layout_height="309dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="numbers"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/TextView_numbersare" />
    <Button
        android:id="@+id/btn_numbercopy"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginTop="8dp"
        android:text="Copy"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/btn_numsReset"
        app:layout_constraintTop_toBottomOf="@+id/TextView_numbers" />
    <Button
        android:id="@+id/btn_numsReset"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginTop="8dp"
        android:text="Reset"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent           
        app:layout_constraintTop_toBottomOf="@+id/TextView_numbers" />
    </android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>

编辑:在这里,我在Logcat上发现了一个错误:

01-26 18:40:15.710 32310-32310/karuntodroid.sieveoferatosthenes E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                  Process: karuntodroid.sieveoferatosthenes, PID: 32310
                                                                                  java.lang.NumberFormatException: For input string: ""
                                                                                      at java.lang.Integer.parseInt(Integer.java:533)
                                                                                      at java.lang.Integer.parseInt(Integer.java:556)
                                                                                      at karuntodroid.sieveoferatosthenes.MainActivity$2.onClick(MainActivity.java:38)
                                                                                      at android.view.View.performClick(View.java:5638)
                                                                                      at android.view.View$PerformClick.run(View.java:22444)
                                                                                      at android.os.Handler.handleCallback(Handler.java:751)
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                      at android.os.Looper.loop(Looper.java:159)
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:6139)
                                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
01-26 18:40:15.713 1390-2874/? W/ActivityManager:   Force finishing activity karuntodroid.sieveoferatosthenes/.MainActivity

任何帮助,不胜感激。谢谢!

您正在通过edtPrime.setText(number, TextView.BufferType.EDITABLE(在EditText中设置文本;其中数字变量是Integer。

如果您查看文档,这将尝试获取具有该数字标识符 (id( 的资源。(而且您没有具有该 ID 的资源...例如,可通过R.string.my_string( 访问这些资源

您需要做的是将数字转换为字符串并通过setText(..(进行设置。

最新更新