我正在尝试将 XML 中数字类型的 EditText 转换为 Integer,以便计算以秒为单位的值。
hoursIn = (EditText) findViewById(R.id.hoursET);
minIn = (EditText) findViewById(R.id.minET);
start = (Button) findViewById(R.id.startButton);
stop = (Button) findViewById(R.id.stopButton);
textViewTime = (TextView) findViewById(R.id.timeDisp);
inHr = Integer.parseInt(hoursIn.getText().toString());
inMin = Integer.parseInt(minIn.getText().toString());
hoursMs = hrsToMs(inHr);
minMs = minToMs(inMin);
totalTime = hoursMs + minMs;
当我注释初始化 inHr 和 inMin 的行时,我在运行时没有收到错误,但是当我保留上面的代码时,我收到以下错误:
java.lang.RuntimeException:无法启动 Activity ComponentInfo{dit.assignment3/dit.assignment3.Timer}:java.lang.NumberFormatException:无效的 int:“”
我也尝试过此操作,同时从同一行代码开始出现相同的错误:
final CounterClass timer = new CounterClass(totalTime, 1000);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (hoursIn != null)
{
inHr = Integer.parseInt(hoursIn.getText().toString());
hoursMs = hrsToMs(inHr);
}
if (minIn != null)
{
inMin = Integer.parseInt(minIn.getText().toString());
minMs = minToMs(inMin);
}
else
{
textViewTime.setText("PLEASE GIVE A TIME");
}
totalTime = hoursMs + minMs;
timer.start();
}
});
提前致谢:)
最佳答案
我确信此代码块与您在此处显示的完全相同。这意味着您直接初始化 EditText
并立即调用 getText()
方法,这会导致 Exception
。
初始化后不会立即有任何值,因此当调用 Integer.parseInt
为空值时,您会收到 NumberFormatException
。
所以我建议您将这些代码放在像 buttonClicked
这样的事件中,这样您就可以确定您已经输入了一些文本。最好也检查是否为空
,
public void buttonClicked(View v){
inHr = Integer.parseInt(hoursIn.getText().toString());
inMin = Integer.parseInt(minIn.getText().toString());
}
关于java - 编辑文本到整数 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36314901/