我有一个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");
}
});
}
});
在空字符串上执行Integer.parseInt()
时,它会抛出NumberFormatException
。
首先,检查Teaching
的值,并验证它不是空字符串,或者对NumberFormatException
-try/catch,然后在这种情况下为
其他答案都很好,但我建议使用尝试/捕获数字格式例外
进行包装。我知道你有输入设置为只接受数字,但总是比抱歉更安全。
小写字符串变量教学。在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,数