【问题标题】:Converting EditText to int? (Android)将 EditText 转换为 int? (安卓)
【发布时间】:2013-02-08 20:31:19
【问题描述】:

我想知道如何将 EditText 输入转换为 int,我让用户输入一个数字,然后将其除以 8。

MainActivity.java:

@SuppressWarnings("unused")
public void calcSpeed(View view)
{       
    setContentView(R.layout.activity_speed);     
    
    final TextView mTextView = (TextView) findViewById(R.id.textView3);
    mTextView.setText("You should be getting: " +netSpedCalcd);
}

activity_main.xml:

    <EditText
    android:id="@+id/editText1" 
    android:inputType="number"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="62dp"
    android:ems="10" >

【问题讨论】:

标签: android android-edittext integer


【解决方案1】:

你必须使用。

String value= et.getText().toString();
int finalValue=Integer.parseInt(value);

如果您只允许输入数字,则设置 EditText 属性。

android:inputType="number"

如果这有帮助,请接受,否则请发表您的评论。

【讨论】:

  • EditText et =(EditText)findViewById(R.id.ettext);像这样。
  • EditText et =(EditText)findViewById(R.id.editText1); int nIntFromET = Integer.parseInt(文本);它说“文本无法解析为变量”
【解决方案2】:

使用Integer.parseInt,并确保捕捉到如果输入不是整数则抛出的 NumberFormatException。

【讨论】:

    【解决方案3】:

    我现在很困很累,但是这样不行吗?:

    EditText et = (EditText)findViewById(R.id.editText1);
    String sTextFromET = et.getText().toString();
    int nIntFromET = new Integer(sTextFromET).intValue();
    

    try
    {
        int nIntFromET = Integer.parseInt(sTextFromET);
    }
    catch (NumberFormatException e)
    {
        // handle the exception
    }
    

    【讨论】:

    • 第一个说“et无法解析” 第二个说“Integer.parseInt无法解析为一个类型”
    • 我已经编辑了答案(等待同行评审),但第二种情况的问题是虚假的“新”,只需将其删除。
    • 好吧,对于 sTextFromET,它说“sTextFromET 无法解析为变量”,我该怎么办? (抱歉,我是 Java 和一般编程新手。)
    • 在您尝试从中获取值的 EditText 实例上将 sTextFromET 替换为对 getText() 的调用。
    • 我已经尝试了以下在不同的 stackoverflow 问题中发现的方法,但我得到了 NullPointerException。 pastebin.com/LaXYb4LC
    【解决方案4】:

    试试这个,

    EditText x = (EditText) findViewById(R.id.editText1);
    int n = Integer.parseInt(x.getText().toString());
    

    【讨论】:

    【解决方案5】:

    您可以将 parseInt 与 try 和 catch 块一起使用

    try
    {
        int myVal= Integer.parseInt(mTextView.getText().toString());
    }
    catch (NumberFormatException e)
    {
        // handle the exception
        int myVal=0;
    }
    

    或者您可以创建自己的 tryParse 方法:

    public Integer tryParse(Object obj) {
        Integer retVal;
        try {
            retVal = Integer.parseInt((String) obj);
        } catch (NumberFormatException nfe) {
            retVal = 0; // or null if that is your preference
        }
        return retVal;
    }
    

    并在您的代码中使用它,例如:

    int myVal= tryParse(mTextView.getText().toString());
    

    注意:下面没有try/catch的代码会抛出异常

    int myVal= new Integer(mTextView.getText().toString()).intValue();
    

    或者

    int myVal= Integer.decode(mTextView.getText().toString()).intValue();
    

    【讨论】:

      【解决方案6】:

      尝试下面的代码将editText转换为整数。

      int intVal = Integer.parseInt(mEtValue.getText().toString());
      

      【讨论】:

        【解决方案7】:

        我自己也有同样的问题。我不确定你是否让它工作,但我必须做的是:

        EditText cypherInput;
        cypherInput = (EditText)findViewById(R.id.input_cipherValue);
        int cypher = Integer.parseInt(cypherInput.getText().toString());
        

        第三行代码导致应用在没有使用 .toString() 之前的 .getText() 的情况下崩溃。

        仅供参考,这是我的XML:

        <EditText
            android:id="@+id/input_cipherValue"
            android:inputType="number"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        

        【讨论】:

          【解决方案8】:

          你可以这样使用

           EditText dollar=(EditText) findViewById(R.id.money);
           int rupees=Integer.parseInt( dollar.getText().toString());
          

          【讨论】:

            【解决方案9】:

            首先,使用以下代码在 android studio 的资源中找到您的EditText

            EditText value = (EditText) findViewById(R.id.editText1);

            然后将EditText的值转换为string,然后将值解析为int

            int number = Integer.parseInt(x.getText().toString());

            这会起作用

            【讨论】:

              【解决方案10】:
              int total_Parson = Integer.parseInt(etRegularTickets.getText().toString());
              int ticket_price=Integer.parseInt(TicketData.get(0).getTicket_price_regular());
              total_ticket_amount = ticket_price * total_Parson;
              etRegularPrice.setText(""+total_ticket_amount);
              

              【讨论】:

                【解决方案11】:

                在 Kotlin 中,您可以做到这一点。

                val editText1 = findViewById(R.id.editText)
                val intNum = editText1.text.toString().toInt()
                

                【讨论】:

                  【解决方案12】:

                  在 kotlin 中,由于 Extension Function

                  有最短的方法
                  fun EditText.toInt(): Int {
                      return this.text.toString().toInt()
                  }
                  

                  在您的代码中使用它,如下所示:

                  mEditText.toInt()
                  

                  【讨论】:

                    猜你喜欢
                    • 2016-05-30
                    • 2021-12-30
                    • 2020-10-10
                    • 1970-01-01
                    • 2017-08-02
                    • 1970-01-01
                    • 2011-06-21
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多