我正在尝试将EditText(xml中的number类型)转换为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:无法启动活动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();
}
});
提前致谢:)
答案 0 :(得分:1)
我确定这些代码块与您在此处显示的完全相同。这意味着您正在直接初始化EditText
并立即调用导致getText()
的{{1}}方法。
初始化后不会立即显示任何值,以便在调用Exception
为空值时获得NumberFormatException
。
因此,我建议您将这些代码放在像Integer.parseInt
这样的事件中,这样您就可以确定已经输入了一些文本。并且最好还检查buttonClicked
是否也是
empty
答案 1 :(得分:0)
每当您尝试将空字符串解析为Integer时,您将获得java.lang.NumberFormatException: Invalid int: ""
。因此,您需要检查EditText是否为空。
您可以轻松地执行此操作,如下所示
if (hoursIn.getText().toString().matches("")) {
Toast.makeText(this, "You did not enter a text", Toast.LENGTH_SHORT).show();
return;
}
或强>
您可以按照以下方式进行检查
if (hoursIn.getText().toString().equals("")) {
Toast.makeText(this, "You did not enter a text", Toast.LENGTH_SHORT).show();
return;
}
答案 2 :(得分:0)
首先,您必须将您正在阅读的行放在某些事件中的edittext中,例如单击按钮。然后检查是否在edittext中输入了任何内容,然后使用try / catch子句将其转换为数字。
试试这段代码 在活动xml文件中添加一个按钮:
<Button
android:height="wrap_content"
android:width="wrap_content"
android:onClick="myClickHandler" />
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);
public void myClickHandler(View v){
if (hoursIn.getText().toString().matches("") || minIn.getText().toString().matches("")){
Toast.makeText(this, "You did not enter a text",Toast.LENGTH_SHORT).show();
return;
} else {
try {
inHr = Integer.parseInt(hoursIn.getText().toString());
inMin = Integer.parseInt(minIn.getText().toString());
hoursMs = hrsToMs(inHr);
minMs = minToMs(inMin);
totalTime = hoursMs + minMs;
Log.i("success");
} catch (NumberFormatException e) {
Toast.makeText(this, "Please enter number only",Toast.LENGTH_SHORT).show();
return;
}
}
}