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());
现在您从 Object
为 EditText
对象调用 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()
我正在尝试制作一个只允许用户输入 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());
现在您从 Object
为 EditText
对象调用 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()