格式异常错误
Format exeption errors
我有 2 个活动。 Activity A 向 activity B 发送一个号码,activity 接收并使用该号码。问题是 activity B 产生 FormatExeption 错误。
活动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);
Activity 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);
在 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){
}
If you try to convert String.valueOf(variable)
to a number it will throw a NumberFormatException
at runtime because that string aint a number !!
几点:
- 您不应该将
set_limit
转换为字符串; set_limit
是一个 EditText
小部件。相反,您应该放置视图的 contents(它显示的文本)。
- 没有理由明确构建您自己的附加包。只需使用
Intent
class. 中定义的 putExtra
方法之一
- 错误检查可能在 activity A 而不是 activity B 中处理得更好。
- 您在activity B 中似乎存在逻辑错误,因为您只是在修剪文本为空时才尝试解析限制数字。这似乎倒退了。
综上所述,我将按如下方式重写您的代码:
Activity答:
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
}
}
Activity乙:
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);
}
我有 2 个活动。 Activity A 向 activity B 发送一个号码,activity 接收并使用该号码。问题是 activity B 产生 FormatExeption 错误。
活动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);
Activity 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);
在 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){
}
If you try to convert
String.valueOf(variable)
to a number it will throw aNumberFormatException
at runtime because that string aint a number !!
几点:
- 您不应该将
set_limit
转换为字符串;set_limit
是一个EditText
小部件。相反,您应该放置视图的 contents(它显示的文本)。 - 没有理由明确构建您自己的附加包。只需使用
Intent
class. 中定义的 - 错误检查可能在 activity A 而不是 activity B 中处理得更好。
- 您在activity B 中似乎存在逻辑错误,因为您只是在修剪文本为空时才尝试解析限制数字。这似乎倒退了。
putExtra
方法之一
综上所述,我将按如下方式重写您的代码:
Activity答:
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
}
}
Activity乙:
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);
}