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

文本更改后的Android文本观察器

百里君博
2023-03-14

我必须取编辑文本的值并将其除以1.21....错误在哪里

private TextWatcher filterTextWatcher = new TextWatcher() {
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                }
    public void onTextChanged(CharSequence s, int start, int before, int end) {


        }
    public void afterTextChanged(Editable s) {

        double imponibile21;
        Importo.getText().toString();
        if (spinnerIva.getSelectedItem().toString().equals("21%")){

        Double value = Double.valueOf(""+Importo);
        imponibile21 = (value/1.21);

        NumberFormat formatter = NumberFormat.getCurrencyInstance();
        String Imponibile = formatter.format(imponibile21 );
        mImponibile.setText(Imponibile);

错误:

    09-18 22:59:56.617: E/AndroidRuntime(27425): java.lang.NumberFormatException: Invalid double: "android.widget.EditText{421f9c38 VFED..CL .F...... 0,664-1080,781 #7f08000b app:id/ed_importo_fattura}"
09-18 22:59:56.617: E/AndroidRuntime(27425):    at java.lang.StringToReal.invalidReal(StringToReal.java:63)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at java.lang.StringToReal.initialParse(StringToReal.java:114)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at java.lang.StringToReal.parseDouble(StringToReal.java:263)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at java.lang.Double.parseDouble(Double.java:295)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at java.lang.Double.valueOf(Double.java:332)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at fatture.acquisti.Inserisci_fatture$2.afterTextChanged(Inserisci_fatture.java:178)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at android.widget.TextView.sendAfterTextChanged(TextView.java:7841)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:9754)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:970)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:497)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:435)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:30)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:676)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:196)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:183)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:279)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at android.os.Handler.dispatchMessage(Handler.java:99)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at android.os.Looper.loop(Looper.java:137)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at android.app.ActivityThread.main(ActivityThread.java:5328)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at java.lang.reflect.Method.invokeNative(Native Method)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at java.lang.reflect.Method.invoke(Method.java:511)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
09-18 22:59:56.617: E/AndroidRuntime(27425):    at dalvik.system.NativeStart.main(Native Method)

共有3个答案

管弘
2023-03-14

实现TextWatcher添加到您的类。这解决了我的问题。我导入了TextWatcher,但它不起作用,然后我尝试实现它,它完美地工作。

越麒
2023-03-14

看起来您正在尝试将EditText解析为Double而不是包含该值的String

尝试这样的事情:

public void afterTextChanged(Editable s) {

    double imponibile21;
    String val = s.toString();
    if (spinnerIva.getSelectedItem().toString().equals("21%")){

        Double value = Double.valueOf(val);

确保 val 包含有效的双精度值

葛烨
2023-03-14

从< code>String到< code>Double的转换工作不正常,因此出现< code > Java . lang . String toreal . invalid real(String toreal . Java:63)错误。这个错误发生在代码的第63行(java:63)。

试试这个:

String stringValue = Importo.getText().toString();
if(!stringValue.isEmpty()) {
    Double value = Double.valueOf(stringValue);
}
 类似资料:
  • 在我的Android项目中,我必须将TextChangedListener(TextWatcher)添加到编辑文本视图中。它有三个部分: < Li > < code > ontext changed() < Li > < code > beforeTextChanged() < Li > < code > afterTextChanged() 这三个有什么区别?我必须在键侦听器上实现一个表搜索,对

  • 我有一个程序,其中有一个editText。我想实现TextWatcher以反映总editText中的更改。当编辑框达到最大字符数限制10时,我想显示警告对话框。当我实现文本观察程序时,它可以工作,但当它达到10个字符时,它显示两个警告框。这是我的密码

  • 我正试图在一个需要过滤非数字字符和点的编辑文本上实现一个过滤器。我可以使用编辑文本或输入类型的数字标签,但似乎设备之间有轻微的差异,就像有些设备即使在编辑文本中过滤它们也显示点字符。 下面是afterTextChanged方法 这是输出结果 如您所见,在我删除第一个“h”后,当我输入另一个h时,字符串变为“66hh”,其中它应该是“66h”,因为我已经删除了第一个h。什么原因会阻止我对可编辑的更改

  • 我有一个字段,上面有一个客户文本观察者。在一段代码中,我需要更改EditText中的值,我使用<code>.setText(“whather”)来执行此操作。 问题是,只要我做了更改,就会调用<code>afterextchanged 我需要 afterTextChanged 方法中的文本,因此不建议删除 。

  • 问题内容: 我有以下UseCase: A创建一个聊天并邀请B和C-在服务器A上创建一个文件。A,B和C将消息写入此文件。A,B和C读取了此文件。 我想在服务器上创建一个文件并观察该文件,如果其他人向该文件中写入内容,则将新内容与websockets发送回去。 因此,我的node.js应用程序应观察到此文件的任何更改。 如何观察文件更改? 在不锁定文件的情况下使用节点js可以实现吗? 如果无法使用文

  • 我在读关于Android编程中的TextWatcher的文章。我无法理解和之间的区别。 虽然我提到了TextWatcher的onTextChanged、beforeTextChanged和postTextChanged之间的差异,但我仍然无法想到需要使用而不是的情况。