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

Number range on an edittext - only want numbers between 1 and 10

我正在尝试制作一个只允许用户输入 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);
        }

}

你在这行有问题

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

更改为:

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

现在您从 ObjectEditText 对象调用 toString() 方法。您必须先为它调用 getText() 方法,然后再为 CharSequence

调用 toString() 方法

更新: 您会发现两次具有相同 ID 的相同视图。看下面的代码:

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

第二次应该有R.id.tvNumEnt,我觉得是...

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

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