我正在尝试在单击按钮时显示一条消息,告诉用户填写空白字段。目前,如果该字段为空,则崩溃/强制关闭应用程序。我尝试执行以下代码并且没有成功。原来我没有if / else,我只是运行计算器();方法和以下的imm代码。
有人能指出我正确的方向吗?
public void onClick(View v)
{
if ((EditText)findViewById(R.id.amount1)== null)
{
Context context = getApplicationContext();
CharSequence text = "Enter a number";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
else
{
calculator();
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
}
我很确定这是错误的代码:
if ((EditText)findViewById(R.id.amount1)== null)
根本不知道如何按照我想要的方式说出来。
答案 0 :(得分:5)
尝试检查EditText小部件中文本的长度
EditText e = (EditText)findViewById(R.id.amount1));
if(e.getText().length == 0){
//Show Toast
}else{
//continue your code
}
答案 1 :(得分:2)
使用此代码。
EditText et = (EditText)findViewById(R.id.amount1));
if(et1.getText().length() == 0){
//Display toast here
} else{
//Your code
}
答案 2 :(得分:0)
EditText text = (EditText)findViewById(R.id.amount1);
if(TextUtils.isEmpty(text.toString())) {
// show toast
}
答案 3 :(得分:0)
您实际上想要检查EditText的内容是否为空或字符串。
有问题的行应该是这样的:
if("".equals(((EditText)findViewById(R.id.amount1)).getText().toString()))
当然,您可能希望将该语句分解为更多行,以使其更具可读性!
答案 4 :(得分:0)
即使该字段为空,edittext也不为空。使用:
EditText editText = (EditText)findViewById(R.id.amount1);
String text = new String(editText.getText());
if (test.equals("")) {
//...
答案 5 :(得分:0)
((EditText)findViewById(R.id.amount1)== null
只是引用了ID为amount1
的EditText,它没有检查EditText是否有有效的条目。
要查看EditText是否包含文本,您可以通过EditText#getText().toString()
要使其工作,首先将对EditText的引用存储在var中,然后对字符串执行检查:
EditText et = (EditText)findViewById(R.id.amount1);
String amount1 = et.getText().toString();
if (amount1.equals("")) {
// Do your stuff here
}
我正在使用局部变量,只是假设您希望字符串具有内容。您可能需要执行其他检查来处理所有情况(例如格式错误的输入)。您可以通过在EditText上设置inputType来减少其中的一部分。例如,如果您尝试仅处理十进制数字,则可以将其设置为numberDecimal。