首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >更改的文本上的EditeText正在崩溃

更改的文本上的EditeText正在崩溃
EN

Stack Overflow用户
提问于 2018-07-04 02:16:54
回答 5查看 523关注 0票数 0

我必须转换一些数字editText在双精度和文本更改后,做一个简单的数学操作。一切正常,除了文本更改:无论我做什么,它都会崩溃(也可以用"hello world“来更改TextView )。

下面是我的代码:

代码语言:javascript
复制
hEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
        {
            Double hDouble = Double.parseDouble(hEditText.toString());
            Double bDouble = Double.parseDouble(bEditText.toString());
            Double mDouble = Double.parseDouble(mEditText.getText().toString());
            Double miDouble = Double.parseDouble(miEditText.getText().toString());

            lResult.setText("" + Math.sqrt((hDouble * hDouble) + (bDouble * bDouble)));
        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });

日志

代码语言:javascript
复制
E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.cosmo.fisicapp, PID: 21198
              java.lang.NumberFormatException: empty String
                  at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1071)
                  at java.lang.Double.parseDouble(Double.java:547)
                  at com.example.cosmo.fisicapp.Equilibrio$1.afterTextChanged(Equilibrio.java:47)
                  at android.widget.TextView.sendAfterTextChanged(TextView.java:8525)
                  at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:10788)
                  at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1222)
                  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:583)
                  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:509)
                  at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:508)
                  at android.text.method.NumberKeyListener.onKeyDown(NumberKeyListener.java:121)
                  at android.widget.TextView.doKeyDown(TextView.java:6533)
                  at android.widget.TextView.onKeyDown(TextView.java:6323)
                  at android.view.KeyEvent.dispatch(KeyEvent.java:2742)
                  at android.view.View.dispatchKeyEvent(View.java:9949)
                  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1667)
                  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1667)
                  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1667)
                  at android.widget.ScrollView.dispatchKeyEvent(ScrollView.java:391)
                  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1667)
                  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1667)
                  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1667)
                  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1667)
                  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1667)
                  at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1667)
                  at com.android.internal.policy.DecorView.superDispatchKeyEvent(DecorView.java:439)
                  at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1861)
                  at android.app.Activity.dispatchKeyEvent(Activity.java:3141)
                  at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:535)
                  at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59)
                  at android.support.v7.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:2530)
                  at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:353)
                  at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4742)
                  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4713)
                  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4249)
                  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4302)
                  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4268)
                  at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4395)
                  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4276)
                  at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4452)
                  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4249)
                  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4302)
                  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4268)
                  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4276)
                  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4249)
                  at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6676)
                  at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6650)
                  at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6611)
                  at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3917)
                  at android.os.Handler.dispatchMessage(Handler.java:105)
                  at android.os.Looper.loop(Looper.java:156)
                  at android.app.ActivityThread.main(ActivityThread.java:6523)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)

E/AndroidRuntime:在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-07-05 18:20:43

代码语言:javascript
复制
hEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
        {
          if(!charSequence.equals("")){
            Double hDouble = Double.parseDouble(charSequence.toString());
            Double bDouble = Double.parseDouble(charSequence.toString());
            Double mDouble = Double.parseDouble(charSequence.getText().toString());
            Double miDouble = Double.parseDouble(charSequence.getText().toString());

            lResult.setText("" + Math.sqrt((hDouble * hDouble) + (bDouble * bDouble)));
           }
        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });
票数 1
EN

Stack Overflow用户

发布于 2018-07-04 02:22:27

尝试将您的代码移动到:

代码语言:javascript
复制
    @Override
    public void afterTextChanged(Editable editable) {
        Double hDouble = Double.parseDouble(hEditText.toString());
        Double bDouble = Double.parseDouble(bEditText.toString());
        Double mDouble = Double.parseDouble(mEditText.getText().toString());
        Double miDouble = Double.parseDouble(miEditText.getText().toString());

        lResult.setText("" + Math.sqrt((hDouble * hDouble) + (bDouble * bDouble)));
    }
票数 0
EN

Stack Overflow用户

发布于 2018-07-04 02:23:23

尝试更改以下行:将Double hDouble = Double.parseDouble(hEditText.toString());更改为Double hDouble = Double.parseDouble(hEditText.getText().trim());,并更改其他行

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51160762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档