Android Studio 如何改变一个按钮的点击变量的值[复制]

yqlxgs2m  于 2022-12-30  发布在  Android
关注(0)|答案(2)|浏览(228)
    • 此问题在此处已有答案**:

(9个答案)
7小时前关闭.

enterbutton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        int get_form_edittext=Integer.parseInt(edtx.getText().toString());
        if(get_form_edittext==111){
        flag=1;}
        else{
            flag=0;

        }

首先,我用0初始化了标志变量。我希望如果用户在编辑文本上输入"o",然后按下回车键,标志变量的值应该用1更改,否则值应该保持为0。我已经实现了上述逻辑,但在点击回车键时,应用程序崩溃。
对数表

Process: com.sumita.tic_tac_toe, PID: 30411
   java.lang.NumberFormatException: For input string: "o"
           at java.lang.Integer.parseInt(Integer.java:608)
              at java.lang.Integer.parseInt(Integer.java:643)
              at com.sumita.tic_tac_toe.MainActivity$2.onClick(MainActivity.java:36)
              at android.view.View.performClick(View.java:6412)
              at android.view.View$PerformClick.run(View.java:25341)
              at android.os.Handler.handleCallback(Handler.java:790)
              at android.os.Handler.dispatchMessage(Handler.java:99)
              at android.os.Looper.loop(Looper.java:214)
              at android.app.ActivityThread.main(ActivityThread.java:6977)
              at java.lang.reflect.Method.invoke(Native Method)
              at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:910)
y4ekin9u

y4ekin9u1#

必须在EditText中声明inputType="number"

  • 您的activity_main.xml
<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="number" />
  • 您的MainActivity.java
button.setOnClickListener(v -> {
    String editTextString = editText.getText().toString().trim();
    if (editTextString != null && !editTextString.isEmpty()) {
        int value = Integer.parseInt(editTextString);
        flag = value == 111 ? 1 : 0;
    }
});
hm2xizp9

hm2xizp92#

兄弟,这是因为'o'是不是一个整数. logcat错误说,它已经失败的转换“o”到整数.这样做解决方案1:

String text = editText.getText().toString();
    if (text != null && !text.isEmpty()) {
       if(string.matches("\\d+(?:\\.\\d+)?")){
         // here the string is a number
         // you can now check for 111 here
       }else{
         // and here the string is not a number 
       }
    }

溶液2:

使用try-catch:

try{
    int get_form_edittext=Integer.parseInt(edtx.getText().toString());
     if(get_form_edittext==111){
       flag=1;
     }else{
       flag=0;
     }
    }catch(Exception e){
       flag=0;
    }

**解决方案3:**使您的编辑文本数字化:将其添加到XML中的编辑文本中

android:inputType="number"

相关问题