edittext上的数字范围 - 只需要1到10之间的数字

时间:2015-03-02 18:54:43

标签: android button onclick range

我试图创建一个只允许用户输入1到10之间的应用,我尝试编写自己的方法,如果数字超出该范围,则会更改文本视图到ERROR并清除编辑文本中的内容,但它会使应用程序崩溃。有谁知道它有什么问题? Android新手。

代码:

    public void buttonClick (View v)
{



    TextView tvNum = (TextView) findViewById(R.id.tvNumEnt);
    TextView tvName = (TextView) findViewById(R.id.tvNumEnt);
    TextView tvNameEnt = (TextView) findViewById(R.id.NameEnt);
    TextView tvNumEnt = (TextView) findViewById(R.id.NumEnt);

    EditText num = (EditText) findViewById(R.id.ETnumber);
    EditText name = (EditText) findViewById(R.id.ETname);

    String nameContent = name.getText().toString();
    String numContent = num.getText().toString();

    tvName.setText(nameContent);

        int value = Integer.parseInt(num.getText().toString());
        if (value > 10)
        {
            tvNum.setText("ERROR");
            num.getText().clear();
            name.getText().clear();

        }
        else if (value < 1)
        {
            tvNum.setText("ERROR");
            num.getText().clear();
            name.getText().clear();
        }
        else
        {



            tvNum.setText(numContent);

            tvNameEnt.setVisibility(View.VISIBLE);
            tvNumEnt.setVisibility(View.VISIBLE);
            tvName.setVisibility(View.VISIBLE);
            tvNum.setVisibility(View.VISIBLE);
        }

}

2 个答案:

答案 0 :(得分:0)

你在这一行有问题

int value = Integer.parseInt(num.toString());

更改为:

int value = Integer.parseInt(num.getText().toString());

现在,您从toString()Object对象调用EditText方法。您必须首先调用getText()方法,然后调用toString()的{​​{1}}方法

更新: 您会找到具有相同ID的相同视图的两倍。请看下面的代码:

CharSequence

第二次应该有TextView tvNum = (TextView) findViewById(R.id.tvNumEnt); TextView tvName = (TextView) findViewById(R.id.tvNumEnt); ,我想是这样......

R.id.tvNumEnt

答案 1 :(得分:0)

这里的主要问题是您尝试使用以下代码获取编辑文本中的数字:num.toString(),而您必须使用:num.getText().toString()