簡體   English   中英

如何通過單擊按鈕更改變量的值

[英]How to change the value of a variable on the click of a button

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。我已經實現了上述邏輯,但是在點擊進入應用程序時崩潰了。

日志貓

                                                                                                   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)

您必須在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;
    }
});

兄弟,那是因為 'o' 不是 Integer。logcat 錯誤表明它在將“o”轉換為 Integer 時失敗。這樣做解決方案 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:使您的 editText 數字化:將其添加到 XML 中的編輯文本中

android:inputType="number"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM