android studio edittext字段值转换

时间:2016-04-13 04:31:17

标签: android if-statement android-edittext try-catch

我有一个带有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 ....”

还有其他方法吗?

3 个答案:

答案 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时会遇到异常