格式化exeption错误

时间:2018-03-21 17:49:33

标签: java android numberformatexception

我有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);

2 个答案:

答案 0 :(得分:1)

有几点:

  1. 您不应该将set_limit转换为字符串; set_limitEditText小部件。相反,您应该放置视图的内容(它正在显示的文本)。
  2. 没有理由明确构建自己的额外包。只需使用putExtra类中定义的Intent方法之一。
  3. 在活动A而不是活动B中可能更好地处理错误检查。
  4. 您似乎在活动B中出现逻辑错误,因为您只是在修剪文本为空时尝试解析限制数。这似乎是倒退。
  5. 将所有这些放在一起,我按如下方式重写您的代码:

    活动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_limitEditText类型的变量,因此字符串值将为@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,因为该字符串不是数字!!