我正在学习Java,并且我已经在youtube上找到了一个很棒的教程,当尝试添加它以满足我的需要时,我遇到了这个问题:
我需要将字符串转换为双精度,进行一些数学运算,然后将结果填充到TextView中。
此外,如果我可以从firebase数据库中获取数据(我的代码在另一项活动中进行的操作),那也很好。
现在,我放弃了从dtb中获取数据的想法,因为每次打开活动时应用程序都会崩溃,在我添加try,catch之后,它确实崩溃了,但是活动为空白且没有错误正在显示。
试图逐行消除错误,以查看问题出在哪里,但是即使只剩下一行,应用程序仍然崩溃。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText sup = findViewById(R.id.etSup);
EditText emi = findViewById(R.id.etEmi);
EditText ver = findViewById(R.id.etVer);
EditText abs = findViewById(R.id.etAbs);
TextView ResultTextView = findViewById(R.id.tvResult);
TextView Car = findViewById(R.id.tvCar);
Double dsup = Double.parseDouble(sup.getText().toString());
Double demi = Double.parseDouble(emi.getText().toString());
Double dver = Double.parseDouble(ver.getText().toString());
Double dabs = Double.parseDouble(abs.getText().toString());
Double CE = dsup * demi;
ResultTextView.setText("Total emissions are " + CE);
Double PS = dver * dabs;
Double Total = CE - PS;
Car.setText("Emission balance is " + Total);
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
没有看到错误消息
答案 0 :(得分:0)
尝试将整个onClick()方法放入try / catch块中。到parseDouble()方法引发异常时,您不再在onCreate()方法中,因为您在onCreate()中所做的所有工作都是在注册侦听器。 onClick()方法稍后会在
上运行我不确定从parseDouble调用中可能会遇到什么异常(可能有很多事情,也许是nullpointer?),但是此更改将使您能够找到答案。
以防我不能很好地解释自己:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
// do things
} catch (Throwable e) {
e.printStackTrace();
throw e;
}
}
}
编辑:为了确保我们不会遗漏任何东西,将捕获的“异常”更改为“可抛出的”(注意,除调试外,您实际上不应该捕获可抛出的,这就是我抛出它的原因再次)