格式异常错误

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 !!

几点:

  1. 您不应该将 set_limit 转换为字符串; set_limit 是一个 EditText 小部件。相反,您应该放置视图的 contents(它显示的文本)。
  2. 没有理由明确构建您自己的附加包。只需使用 Intent class.
  3. 中定义的 putExtra 方法之一
  4. 错误检查可能在 activity A 而不是 activity B 中处理得更好。
  5. 您在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);
}