中替换菜单。
我有一个问题,以下代码导致我的应用程序崩溃。
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);
如果这是第一次打开我的应用,则来自getTringextra()命令的空白值会导致应用程序以后在代码中被调用时崩溃。
double rate = Double.parseDouble(rateString);
double years = Double.parseDouble(yearsString);
double outFloat = inFloat * Math.pow((1f + rate), years);
return df2.format(outFloat);
有人知道我可以在第一次打开应用程序时声明getTringExtra方法的默认值吗?
您可以检查何时有额外的可用,请尝试以下方式:
if (intent.hasExtra("years") && intent.hasExtra("rate")){
final String years = intent.getStringExtra("years");
final String rate = intent.getStringExtra("rate");
}
意图 - hasextra
不要忘记您必须在意图中使用键/值参数发送数据,例如:
Intent intent = new Intent(this,YourActivity.class);
intent.putExtra("years", yearsMessage);
intent.putEtra("rate", ratesMessage);
startActivity(intent);
尝试检查变量年和速率上的无效值,正如Consonware所说,将解析放入尝试捕获中可能也是一个好主意,以防万一解析失败的情况
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();
}
}
我thinkyour语法从另一个活动中接收字符串是错误的。用您在发送活动上的putextra中分配的键