我试图创建一个只允许用户输入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);
}
}
答案 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()