【问题标题】:Edittext without value force closes my App没有价值强制的 Edittext 关闭我的应用程序
【发布时间】:2012-05-07 14:07:40
【问题描述】:

当我的 edittext 上有 Int 并且按下 OK 按钮时,我正在强制关闭。

05-07 16:00:12.945: E/AndroidRuntime(28366): java.lang.NumberFormatException: 无法将 '' 解析为整数

这就是我得到的 logcat 错误。

代码如下:

//Button OK

Button bOK = (Button) findViewById(R.id.bOK);
bOK.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
        // TODO Auto-generated method stub

        Toast invalid = Toast.makeText(getApplicationContext(), "Only values between 0-255 will be accepted.", Toast.LENGTH_LONG);
        uin = Integer.parseInt(value.getText().toString());

        if ( uin <= 255 ) {
            Process process = null;
            try {
                process = Runtime.getRuntime().exec("su");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            DataOutputStream os = new DataOutputStream(process.getOutputStream());
            try {
                os.writeBytes("chmod 644 sys/class/leds/button-backlight/brightness\n");
                os.writeBytes("echo " +uin+ " > sys/class/leds/button-backlight/brightness\n");
                os.writeBytes("chmod 444 sys/class/leds/button-backlight/brightness\n");
                os.writeBytes("exit\n");
                os.flush();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else if ( uin > 255 ) {
            invalid.show(); 
        }
    }
});

如果EditText(缺少uin)显示toast 上没有值输入,我如何告诉应用程序,而不是强制关闭? :D

请对我温柔,这是我学习java和android的第二周,我之前从未有过任何编程语言经验:)

【问题讨论】:

  • .xml 文件中 Edittext 的 InputType 是什么?它必须是数字。试试“android:inputType="number"”

标签: android integer android-edittext


【解决方案1】:

您需要将行包围 uin = Integer.parseInt(value.getText().toString()); 像这样的 try/catch 块

try {
    uin = Integer.parseInt(value.getText().toString());
} catch(NumberFormatException e){
    //do something here
}

【讨论】:

    【解决方案2】:

    只需检查您的editext是否为空,如果它是然后捕获异常并且它没有继续您想要做的事情。

    【讨论】:

      【解决方案3】:

      也许你应该捕获抛出的异常:

      try {
          uin = Integer.parseInt(value.getText().toString());
      } catch (NumberFormatException exception) {
          //What to do if the exception is thrown...
          [... Your code ...] 
      }
      

      【讨论】:

        【解决方案4】:

        在 .xml 中设置您的 Edittext

        android:inputType="number" 
        

        并尝试用 Try-catch 块括起来,例如

        try {
            uin = Integer.parseInt(value.getText().toString());   
        } catch(Exception e) {
            e.printStackTrace();
        }
        

        使用e.printStackTrace();你可以找到在这个阶段发生了哪些异常。

        【讨论】:

        • 哇,你们的速度快得惊人!谢谢很多人:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多