研究安卓UI,发现从组件TextView里取出的字符串时,需要判断这个字符串是否为空
例如,在用户登录界面,会有用户名的信息,在登录时,系统要获取TextView里的用户名,并判断是否为空
开始时,我是这样判断的
btn_login.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
ComponentName cn=new ComponentName(MainActivity.this,"com.example.test_intent.login");
String username=userEditText.getText().toString();
if(username==null)
{
buliBuilder.setMessage("用户名不能为空!").setPositiveButton("确定", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(getApplicationContext(), R.string.user_hint, 3000).show();
// TODO Auto-generated method stub
}
});
AlertDialog adAlertDialog=buliBuilder.create();
adAlertDialog.show();
}
else
{
String password=pswEditText.getText().toString();
Bundle bundle=new Bundle();
bundle.putString("username", username);
bundle.putString("password", password);
Intent intent=new Intent();
intent.setComponent(cn);
intent.putExtras(bundle);
startActivity(intent);
// TODO Auto-generated method stub
}
}
直接用username==null(或者username.equals(null))判断,发现这是错的,登录时这个根本起不到判断作用
后来改了一下
btn_login.setOnClickListener(new OnClickListener()
{
@SuppressLint("NewApi")
@Override
public void onClick(View v)
{
ComponentName cn=new ComponentName(MainActivity.this,"com.example.test_intent.login");
String username=userEditText.getText().toString();
if(username.isEmpty())
{
buliBuilder.setMessage("用户名不能为空!").setPositiveButton("确定", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(getApplicationContext(), R.string.user_hint, 3000).show();
// TODO Auto-generated method stub
}
});
AlertDialog adAlertDialog=buliBuilder.create();
adAlertDialog.show();
}
else
{
String password=pswEditText.getText().toString();
Bundle bundle=new Bundle();
bundle.putString("username", username);
bundle.putString("password", password);
Intent intent=new Intent();
intent.setComponent(cn);
intent.putExtras(bundle);
startActivity(intent);
// TODO Auto-generated method stub
}
}
});
但是发现,输入框为其他一些转义字符时,isEmpty()还是不能识别.
最后,只好重写isEmpty(),最后改为:
btn_login.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
ComponentName cn=new ComponentName(MainActivity.this,"com.example.test_intent.login");
String username=userEditText.getText().toString();
if(isEmpty(username))
{
buliBuilder.setMessage("用户名不能为空!").setPositiveButton("确定", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(getApplicationContext(), R.string.user_hint, 3000).show();
// TODO Auto-generated method stub
}
});
AlertDialog adAlertDialog=buliBuilder.create();
adAlertDialog.show();
}
else
{
String password=pswEditText.getText().toString();
Bundle bundle=new Bundle();
bundle.putString("username", username);
bundle.putString("password", password);
Intent intent=new Intent();
intent.setComponent(cn);
intent.putExtras(bundle);
startActivity(intent);
// TODO Auto-generated method stub
}
}
});
public static boolean isEmpty( String input )
{
if ( input == null || "".equals( input ) )
return true;
for ( int i = 0; i < input.length(); i++ )
{
char c = input.charAt( i );
if ( c != ' ' && c != '\t' && c != '\r' && c != '\n' )
{
return false;
}
}
return true;
}
这样就可以了.
给个截图
这样就可以识别转义字符带来的麻烦。