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