我正在尝试开发一款定时器的Android应用。用户在两个EditTexts中输入分钟和小时数,并使用意图将数据放入秒表。不幸的是,我继续得到NumberFormatException。
这是我的代码。
爪哇
@Override
// Gets the view and initializes values for hours and mins
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View v = inflater.inflate(R.layout.fragment_alarm, container, false);
EditText hour = (EditText) v.findViewById(R.id.hours);
EditText min = (EditText) v.findViewById(R.id.mins);
alarm = (Button) v.findViewById(R.id.start);
hours = hour.getText().toString().trim();
Log.d(TAG, "getting and turning into strings");
mins = min.getText().toString().trim();
alarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checked.configureCheck(getData());
}
});
return v;
}
private Bundle getData(){
Bundle b = new Bundle();
try{
int hour = Integer.parseInt(hours);
int min = Integer.parseInt(mins);
b.putInt("hours", hour);
b.putInt("minutes", min);
} catch(NumberFormatException e){
e.printStackTrace();
}
return b;
}
答案 0 :(得分:0)
将您的editText数据转换为整数或浮点数。
Int a = Integer.valueOf(edittext.getText().toString());
通过这种方式,您可以将字符串值转换为整数
答案 1 :(得分:0)
我认为这里的根本问题是你在查找视图后找到了正确的文本(总是为null),所以解析总是得到Exception。
解决方案:
// Declare the 2 EditText as class variable
EditText hour, min;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
// ...
hour = (EditText) v.findViewById(R.id.hours);
min = (EditText) v.findViewById(R.id.mins);
// ...
}
private Bundle getData(){
Bundle b = new Bundle();
try {
int hour = Integer.parseInt(hour.getText().toString().trim());
int min = Integer.parseInt(min.getText().toString().trim());
b.putInt("hours", hour);
b.putInt("minutes", min);
} catch(NumberFormatException e){
e.printStackTrace();
}
return b;
}
祝你好运