我有一个带有EditText
和保存按钮的片段。当用户单击“保存”按钮时,应检查edittext值是否超出范围或相同的数据类型。对于这种情况,值类型应为“FLOAT”,范围为“0.00 - 1000.00”。
这是我的fragment.java代码。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View v = inflater.inflate(R.layout.field_fragment,container, false);
int field = getArguments().getInt("field");
//Modify label
// TextView fieldLabel = (TextView)v.findViewById(field);
//fieldLabel.setText(MainActivity.pageNames[field]);
return v;
}
public void onStart() {
super.onStart();
//---Button view---
Button save = (Button)
getActivity().findViewById(R.id.saveButton);
save.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try{
Float conductivity = Float.parseFloat(conductivity_field.getText().toString());
if (conductivity > 0.F && conductivity < 1000.F) {
Toast.makeText(getActivity(), "The value is correct", Toast.LENGTH_SHORT).show();
} else {
//conductivity_field.setText(R.string.conductivity_field);//set text of the edittext back to the hint
Toast.makeText(getActivity(), "Wrong value for float", Toast.LENGTH_SHORT).show();
}
}catch(Exception e){
Toast.makeText(getActivity(), "Error converting values. Please enter correct value.", Toast.LENGTH_SHORT).show();
}
}
});
}
所以我试图显示这些错误但是当我点击它时,它会忽略if条件并捕获异常并显示“错误转换值msg ....”
还有其他方法吗?
答案 0 :(得分:1)
Button save;
Edittext conductivity_field;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.field_fragment, container, false);
initViews(view);
return view;
}
public void initViews(View v) {
conductivity_field = (EditText) v.findViewById(R.id.conductivity_value);
save= (Button) v.findViewById(R.id.saveButton);
save.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
Float conductivity = Float.parseFloat(edittext.getText().toString());
if (conductivity > 0f && conductivity < 1000f) {
Toast.makeText(getActivity(), "The value is correct", Toast.LENGTH_SHORT).show();
} else {
//conductivity_field.setText(R.string.conductivity_field);//set text of the edittext back to the hint
Toast.makeText(getActivity(), "Wrong value for float", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
Toast.makeText(getActivity(), "Error converting values. Please enter correct value.", Toast.LENGTH_SHORT).show();
}
}
});
}
答案 1 :(得分:1)
使用此代码替换代码 - &gt;
EditText conductivity_field;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View v = inflater.inflate(R.layout.field_fragment,container, false);
conductivity_field = (EditText) v.findViewById(R.id.conductivity_value);
int field = getArguments().getInt("field");
//Modify label
// TextView fieldLabel = (TextView)v.findViewById(field);
//fieldLabel.setText(MainActivity.pageNames[field]);
return v;
}
public void onStart() {
super.onStart();
//---Button view---
Button save = (Button)
getActivity().findViewById(R.id.saveButton);
save.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try{
Float conductivity = Float.parseFloat(conductivity_field.getText().toString());
if (conductivity > 0.F && conductivity < 1000.F) {
Toast.makeText(getActivity(), "The value is correct", Toast.LENGTH_SHORT).show();
} else {
//conductivity_field.setText(R.string.conductivity_field);//set text of the edittext back to the hint
Toast.makeText(getActivity(), "Wrong value for float , BITCH", Toast.LENGTH_SHORT).show();
}
}catch(Exception e){
Toast.makeText(getActivity(), "Error converting values. Please enter correct value.", Toast.LENGTH_SHORT).show();
}
}
});
}
答案 2 :(得分:0)
将edittext初始化为片段的onCreateView方法,并使用edittext的引用来获取输入的值, 你正在做什么,初始化一个名为conductivity_field的新edittext,默认情况下它的值为空,所以你在解析edittext值为float时会遇到异常