我遇到以下代码导致我的应用崩溃的问题。
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
final String years = intent.getStringExtra(MenuActivity.yearsMessage);
final String rate = intent.getStringExtra(MenuActivity.rateMessage);
如果是第一次打开我的应用程序,那么来自getStringExtra()命令的空白值会导致应用程序在代码中稍后调用时崩溃。
double rate = Double.parseDouble(rateString);
double years = Double.parseDouble(yearsString);
double outFloat = inFloat * Math.pow((1f + rate), years);
return df2.format(outFloat);
有人知道在第一次打开应用程序时我可以声明getStringExtra方法的默认值吗?
答案 0 :(得分:0)
尝试检查变量年份和速率的空值,就像CommonsWare所说的那样,将解析放在try catch中也是一个好主意,以防解析失败
if (years != null && rate != null) {
try {
double rate = Double.parseDouble(rateString);
double years = Double.parseDouble(yearsString);
double outFloat = inFloat * Math.pow((1f + rate), years);
return df2.format(outFloat);
} catch (Exception ex) {
ex.printStackTrace();
}
}
答案 1 :(得分:0)
您可以检查何时有额外可用,请尝试以下方式:
if (intent.hasExtra("years") && intent.hasExtra("rate")){
final String years = intent.getStringExtra("years");
final String rate = intent.getStringExtra("rate");
}
不要忘记你必须在意图中使用key / value参数发送数据,如下所示:
Intent intent = new Intent(this,YourActivity.class);
intent.putExtra("years", yearsMessage);
intent.putEtra("rate", ratesMessage);
startActivity(intent);
答案 2 :(得分:0)
我认为你从其他活动接收字符串的语法是错误的。将menuactivity.yearsmessage替换为您在发送活动的putExtra中指定的密钥