当前位置: 首页 > 知识库问答 >
问题:

Android EditText字符串返回“”

夹谷英杰
2023-03-14

我很难在我的android应用程序中处理编辑文本的输入。我正在输入小数点值,我已经处理了小数点,但是当我移除EditText的所有内容时,我的应用程序崩溃了。我在EditText小部件的onTextChanged函数中检查了NULL或“”的值,但是这个值被超越了。以下是我的相关功能:

private void initializeEditTextListener(){
    final TextView resultView = (TextView)findViewById(R.id.resultView);
    final EditText userInput = (EditText)findViewById(R.id.haveTextField);
    userInput.addTextChangedListener(new TextWatcher()
    {
        @Override
        public void afterTextChanged(Editable s) {

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String inputString = userInput.getText().toString();
            if(inputString != null && inputString != "")
            {
                double input = Double.parseDouble(inputString); //<-line causing error
                double result = input * getFactorFromTable();   //specified in logcat
                resultView.setText(Double.toString(result));
            }
            else
            {
                resultView.setText("");
            }
        }
    }
    );
}

我的logcat:

我担心的是我被告知无效的双倍是“”,然而我正在检查这样的事件...

谢谢你的帮助!

共有1个答案

司寇望
2023-03-14
String inputString = userInput.getText().toString();

这不是从OnTextChanged内部的EditText获取文本的首选方法。您的OnTextChanged函数应该如下所示

@Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String inputString = s.toString();
            if(inputString != null && inputString != "")
            {
                double input = Double.parseDouble(inputString); //<-line causing error
                double result = input * getFactorFromTable();   //specified in logcat
                resultView.setText(Double.toString(result));
            }
            else
            {
                resultView.setText("");
            }
        }

OnTextChanged函数CharSequence中的参数只是EditText中的文本

并且应该捕获由空字符串和包含字母的字符串产生的异常

@Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String inputString = s.toString();
           try
            {
                double input = Double.parseDouble(inputString); //<-line causing error
                double result = input * getFactorFromTable();   //specified in logcat
                resultView.setText(Double.toString(result));
            }
            catch(NumberFormatException e)
            {
                resultView.setText("");
            }


           catch(Exception e)
           {
                resultView.setText("");
           }
  }
 类似资料:
  • GETRANGE key start end 返回key 中字符串值的子字符串,字符串的截取范围由start 和end 两个偏移量决定(包括start 和end 在内)。可以使用负值,字符串右面下标是从-1开始的。 注意返回值处理: 1: start>=length, 则返回空字符串 2: stop>=length,则截取至字符结尾 3: 如果start 所处位置在stop右边, 返回空字符串

  • 问题内容: 我有一个返回字符串的Java实例方法,我正在C ++中通过JNI调用此方法。我写了以下代码: 如何获取字符串并将其转换为const char *? 我的程序在访问冲突为0x00000000的最后一行崩溃。returnString不是NULL。 问题答案: 根据,最后一个参数是的指针。 更改 至 或者更好的是,返回一个 我建立了一个类似的简单示例,到目前为止,代码看起来还不错。 虽然,有

  • 问题内容: 我犹豫要问这个问题,因为它看起来很奇怪。但不管怎么说。以防万一有人已经遇到了相同的问题…文件系统功能(fopem,file,file_get_contents)对于http://包装器表现得很奇怪 它似乎有效。 没有提出错误 。fopen()返回资源。 它不会为所有肯定有效的网址返回任何数据(例如)。 文件返回空数组,file_get_contents()返回空字符串,fread返回f

  • 我有一个Java实例方法,它返回一个字符串,我通过C中的JNI调用这个方法。我编写了以下代码: 如何获取字符串并将其转换为常量字符*? 我的程序在最后一行崩溃,访问冲突为0x00000000。returnString不为NULL。

  • 我对编码非常陌生,刚刚接触过静态方法,所以我为这些愚蠢的错误提前道歉。在main下调用该方法时,该方法应该显示一个三角形,但我得到的控制台是空的,没有输出。但是,如果我将此写在main下: 然后,三角形将显示在控制台中,但是对于这个赋值,字符串/三角形必须仅通过使用来调用

  • 问题内容: 我创建了一个Web服务,该服务返回。这必须能够返回工作正常的。但它也应该能够返回。知道如何使用来传送A 吗? 问题答案: JavaMail具有一个可用于此目的的: mime类型中的in决定它将字符串转换为字节时使用的编码方式。