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

编辑文本崩溃应用程序设置为空 ( Android )

子车海
2023-03-14

我有一个EditText,当我将它设置为空并点击按钮时,我的应用程序崩溃了。

当我在Android Monitor中查看它时,它指向一行:

final int addTm = Integer.parseInt(Teaching);

这是我的代码:

线性布局

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="2dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_weight="1"
                android:text="" />

            <EditText
                android:id="@+id/tM"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="24dp"
                android:layout_marginRight="50dp"
                android:ems="1"
                android:inputType="number"
                android:maxLength="1"
                android:text="0" />
           <Button
            android:id="@+id/submitBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Submit" />

        </LinearLayout>

我的Java代码:

Submit.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            String Teaching = Tm.getText().toString();
            final int addTm = Integer.parseInt(Teaching);

            FirebaseDatabase database = FirebaseDatabase.getInstance();
            DatabaseReference myRef = database.getReference("sub").child("TM");
            myRef.runTransaction(new Transaction.Handler() {
                @Override
                public Transaction.Result doTransaction(MutableData mutableData) {
                    Integer currentValue = mutableData.getValue(Integer.class);
                    if (currentValue == null) {
                        mutableData.setValue(0);
                    } else {
                        mutableData.setValue(currentValue + addTm);
                    }

                    return Transaction.success(mutableData);
                }

                @Override
                public void onComplete(DatabaseError databaseError, boolean committed, DataSnapshot dataSnapshot) {
                    System.out.println("Transaction completed");
                }

            });
         }
    });

共有2个答案

张姚石
2023-03-14

在空字符串上执行Integer.parseInt()时,它会抛出NumberFormatException

首先,检查Teaching的值,并验证它不是空字符串,或者对NumberFormatException-try/catch,然后在这种情况下为

施永宁
2023-03-14

其他答案都很好,但我建议使用尝试/捕获数字格式例外进行包装。我知道你有输入设置为只接受数字,但总是比抱歉更安全。

小写字符串变量教学。在Java中,我们只使用大写的类型名。(类、接口等。)注意StackOverflow是如何突出变量教学蓝的,有点晕头转向不是?

为您的成员字段以及 Tm 和提交执行此操作。它们应该写在tm上并提交。此外,Tm 也不是变量的描述性很强的名称。想象一下,另一个程序员进来看看你的代码,想知道tm是什么。这个tm的背景是什么,它来自哪里...它有什么作用?是少年变种人吗?

无论何时使用Integer.parseInt都将其包装在try/catch中:

    @Override
    public void onClick(View view){

        final int addTm;
        try {
            String teaching = Tm.getText().toString();
            addTm = Integer.parseInt(teaching);
        } catch (NumberFormatException e) {
            addTm = 0;
        }

        // ...
    }

你为什么要这样做?如果我在你的数字输入中输入一个十进制数字怎么办?

使用您接受的答案,您仍然会崩溃<代码>整数。parseInt不解析十进制数。

或者,如果我切换设备的语言环境并输入一个Integer.parseInt不会期望的奇数字符,情况会如何?

必须抓住那个例外才能充分证明。

 类似资料:
  • 我尝试了太多东西,但每次按下“计算”(hesapla)按钮后,应用程序都会崩溃。 例如: 我应该写什么/做什么? 有一只原木猫; 通用域名格式。ertugrulguleryuzgmail。sdunothesaplama E/AndroidRuntime:致命异常:主java。lang.NumberFormatException:无效的int:“”在java上。整型。java上的invalidit(

  • 当编辑文本上的回车键被按下时,我试图简单地向listview添加一些内容。我在按钮上也有一个点击监听器,它将调用相同的函数将单词添加到listview。按钮工作正常,直到我添加了文本监视程序。现在,如果我调用的函数在监听器中,如果我按回车键或按下按钮,整个应用程序就会崩溃。如果我从文本监视程序中删除类,那么如果我按下回车键,应用程序不会崩溃,但如果我按下按钮,它会崩溃。有什么想法吗?我已经很久没用

  • 我在我的活动中使用了简单的,如下所示。我已经尝试了来自堆栈和其他资源的不同解决方案,但它不能解决我的问题。 编辑: 我在这里找到了解决方案,从应用程序中删除字体系列。但我像下面一样使用。有没有办法仅删除编辑文本的字体?保持应用程序与字体一起工作? 样式.xml值-v21 文件夹中

  • 我是Android的新手,正在开发我的第一个应用程序。我的主要活动(登录活动)没有操作栏,其余所有活动都有操作栏。当我长时间按下编辑文本时,应用程序会与下面提到的logcat崩溃。我无法找出导致此错误的原因。请帮我找到它。 主要活动.java activity_main.xml

  • 作为快速可视化,这是我的布局: 当我为Coordinator布局设置一个ID()时,应用程序在启动时崩溃,但是删除ID可以让它正常运行。怎么回事?为什么为根视图设置ID会导致应用程序崩溃? 我见过有人用这个findViewById(android.R.id.content)来获取根视图;这是获得rootview的唯一方法吗? 崩溃日志 07-06 18:30:42.253 9385-9385/me

  • 在以前的代码上,谁医生帮了我 现在,android应用程序在我的手机上运行时崩溃了,这是错误日志 第一个问题是在我用相机扫描二维码后,它不能显示在二维码的结果进入 第二个问题是,我从存储器中选择了一个QRcode图像,然后点击确认,它崩溃了 下面是我认为的问题 类型不匹配:推断的类型是Uri?但乌里是意料之中的 冗余SAM构造函数 'onRequestPermissionsResult(Int,数