我是Android初学者,其制作人和应用程序都需要Edit Text及其验证。我尝试了多种方法来验证编辑文本,但无法正常工作。
我想设置要输入的值的范围,例如:如果在13到80之间,则超过该值将给出错误,我的代码仅在编辑文本为空时给出错误,而当值小于13或大于80时不给出错误。
这是我正在使用的代码:
EditText age = (EditText)findViewById(R.id.age);
EditText weight= (EditText)findViewById(R.id.weight);
EditText height= (EditText)findViewById(R.id.height);
Button calculate = (Button) findViewById(R.id.btn_cal);
calculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String a=age.getText().toString();
final String w=weight.getText().toString();
final String h=height.getText().toString();
if(a.length()==0 || (a.length()<12 && a.length()>81)){
age.requestFocus();
age.setError("Between 13 ans 80");
}
else if(w.length()==0 || (w.length()<40 && w.length()>301)){
weight.requestFocus();
weight.setError("Weight required!");
}
else if(h.length()==0 || (h.length()<49 && h.length()>251)){
height.requestFocus();
height.setError("Height required!");
}
else{
aN=Integer.parseInt(a);
wN=Integer.parseInt(w);
hN=Integer.parseInt(h);
}
}
});
a.length()<12 && a.length()>81)
此行表示“长度小于12并且同时大于81”。永远是错误的。
应该是
int ageValue = Integer.valueOf(a);
if (ageValue < 12 || ageValue > 80) {
而且由于length() == 0
处于length() < 12
状态,因此无需检查。
例如,您可以使用Integer.parse()
:
int a = Integer.parse(edittext1.getText().toString().trim());
if(a >= 13 && a <= 80)
{
//do something
}
if(age.getText().toString().length()==0 ||
!(a>12 && a<=80))
{
age.requestFocus();
age.setError("Between 13 ans 80");
}
else if(weight.getText().toString().length()==0 ||
!(w>40 && w<=300))
{
weight.requestFocus();
weight.setError("Weight required!");
}
else if(height.getText().toString().length()==0 ||
!(h>50 && h<=250))
{
height.requestFocus();
height.setError("Height required!");
}
这里是年龄,它是一个字符串,为什么要比较a.length()?
实际应该是
int intAge = 0;
try{
intAge = Integer.parseInt(a);
}catch(Exception e){
}
if (a.length()==0 || (intAge < 12 || intAge > 80)) {
// your code
}
然后比较其他情况
我正在为您提供基本代码,因此您可以根据需要扩展它。使用以下代码
MainActivity.java
editText = (EditText) findViewById(R.id.editText1);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int age = Integer.parseInt(editText.getText().toString().trim());
if (age > 13 && age <= 80) {
Toast.makeText(MainActivity.this, "Valid age", Toast.LENGTH_LONG).show();
}
}
});
main.xml
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText1"
android:layout_centerHorizontal="true"
android:layout_marginTop="45dp"
android:text="Button" />
如果您输入13至80岁之间的年龄,此代码将显示“有效年龄”的消息。