0

日志说活动不能暂停,并且出现数字格式异常,我正在尝试保存两个包含数字的编辑文本的状态,但两者都可以为空或一个可以为空

在我的活动中,有两个编辑文本,用户可以手动输入数字并移至下一步,也可以打开计算器将一些数字相加,并将总数设置为其中一个编辑文本,我想保存状态,所以如果他需要使用计算器填写两个编辑文本,当他们返回第二个数字时,他设置的第一个数字仍然存在。

我不知道如何处理这个,这是我尝试的最后一段代码。

protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    double length =Double.parseDouble(edtNumber1.getText().toString());
    double height = Double.parseDouble(edtNumber2.getText().toString());

    outState.putDouble("LENGTH", length);
    outState.putDouble("HEIGHT", height);
}

在 onCreate

if (savedInstanceState != null) {
    double hght = savedInstanceState.getDouble("LENGTH");
    double lnth = savedInstanceState.getDouble("LENGTH");
    if (savedInstanceState.containsKey("LENGTH")); {
        edtNumber1.setText(Double.toString(lnth));
    }

    if(savedInstanceState.containsKey("HEIGHT")); {
        edtNumber2.setText(Double.toString(hght)); 
    }
}
4

3 回答 3

1

你的“if”语句后面有多余的分号,将它们变成无操作并导致后面的块总是被执行。

于 2013-05-09T19:27:41.810 回答
1

尝试super.onSaveInstanceState(outState);在方法结束时调用并确保您的 editText 包含数字。

因此,改变

double hght = savedInstanceState.getDouble("LENGTH");

经过

double hght = savedInstanceState.getDouble("HEIGHT");

并删除你;if (savedInstanceState.containsKey("LENGTH"));if (savedInstanceState.containsKey("HEIGHT"));

于 2013-05-09T19:25:58.167 回答
1

IT 意味着一个(或两个)文本字段没有数字。您需要在 ParseDouble 周围捕获该异常并以某种方式处理它(可能通过使用默认值)。

于 2013-05-09T19:26:07.960 回答