我有2项活动。活动A向活动B发送号码,活动接收并使用号码。问题是活动B产生FormatExeption错误。
Activty A代码:
EditText set_limit = findViewById(R.id.editText2);
Bundle set_limit_basic = new Bundle();
set_limit_basic.putString("limit_basic", String.valueOf(set_limit));
Intent Aintent = new Intent(A.this, B.class);
Aintent.putExtras(set_limit_basic);
startActivity(Aintent);
活动B代码:
Bundle set_limit_basic = getIntent().getExtras();
if (set_limit_basic != null) {
String B_string = set_limit_basic.getString("limit_basic");
if ( B_string .trim().length() == 0){
limit_number = Integer.parseInt(B_string);
答案 0 :(得分:1)
有几点:
set_limit
转换为字符串; set_limit
是EditText
小部件。相反,您应该放置视图的内容(它正在显示的文本)。putExtra
类中定义的Intent
方法之一。将所有这些放在一起,我按如下方式重写您的代码:
活动A:
EditText set_limit = findViewById(R.id.editText2);
CharSequence text = set_limit.getText();
if (TextUtils.isEmpty(text)) {
// handle case of no text
} else {
try {
int limit_number = Integer.parseInt(text.toString());
Intent intent = new Intent(A.this, B.class);
intent.putExtra("limit_basic", limit_number);
startActivity(intent);
} catch (NumberFormatException e) {
// handle case of improperly formatted text
}
}
活动B:
limit_number = getIntExtra("limit_basic", -1 /* or other default value */);
// or, if you want to explicitly check for presence of the extra:
if (hasExtra("limit_basic")) {
limit_number = getIntExtra("limit_basic", -1);
}
答案 1 :(得分:0)
在1st Activity
您尝试使用String.valueOf(edittext);
set_limit
是EditText
类型的变量,因此字符串值将为@djfjckckc78
,就像这样......肯定不是数字)试
String.valueOf(set_limit.getText().toString());
即
set_limit_basic.putString("limit_basic",String.valueOf(set_limit.getText().toString()));
以及Activity B
,
if ( B_string .trim().length() > 0){
}
如果您尝试将
String.valueOf(variable)
转换为数字,它会在运行时抛出NumberFormatException
,因为该字符串不是数字!!