如何允许EditText为空并显示setError消息?

时间:2018-07-23 13:50:56

标签: java android

很多天以来,我一直在努力理解为什么我在网上找到的帮助无法解决我的问题,所以我认为最好的选择就是在这里提问。

作为一个旁注,我知道我的变量名不是最好的,并且在进入Android开发时我通常是一个新手,但是我想我能理解并且我能够公平地对问题进行排序很容易-也许除了这个东西。

我正在创建一个简单的应用程序,该应用程序可以让我获取所售商品的利润总额,因此它将考虑运费并自动进行计算。为此,当运费保留为空(空白)时,我想返回一条消息,说明不能为空,必须输入“ 0”进行计算。 (我的EditText字段仅允许输入数字)

public class MainActivity extends AppCompatActivity {
double shippingNum;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

shippingPrice = (EditText) findViewById(R.id.shippingPrice);
}

calculateBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

shippingNum = Integer.parseInt(shippingPrice.getText().toString());
if(shippingPrice.getText().toString().equals("") || 
shippingPrice.getText().length() == 0){
                //shippingPrice.setText("0");
                shippingPrice.setError("You can't leave this field empty! Enter something!");
            }

我还尝试了其他变体,例如:

if(TextUtils.isEmpty(shippingPrice.getText().toString().trim())){
                shippingPrice.setError("You can't leave this field empty! Enter something!");
                shippingPrice.setText("0");
            }

但是这些似乎都不允许我在不崩溃的情况下将字段留空。我尝试了十多种不同的方法,但我意识到它们是浪费时间,因为它们无法工作-至少我已经学会了在哪里可以使用它们。

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

您可以尝试执行以下操作,检查编辑文本的长度,如果为零则显示祝酒词,如果不执行该程序的下一部分,则输入更多:

if(getText().length() == 0){
    Toast.makeText(getActivity(), "Enter values into field!",
    Toast.LENGTH_LONG).show();
}
else{
    // continue with the desired function of the program
}

答案 1 :(得分:0)

在您的课程中添加以下方法:

 public static boolean checkBlankValidation(EditText editText) {
     if (TextUtils.isEmpty(editText.getText().toString().trim())) {
         return false;
     } else {
         return true;
     }
 }

并按如下所示调用此方法:

 if (!checkBlankValidation(shippingPrice)) {
      shippingPrice.requestFocus();
      Toast.makeText(this, "Field should not be empty", Toast.LENGTH_SHORT).show();
      return false;
 } else {
      return true;
 }  

答案 2 :(得分:0)

公共类MainActivity扩展了AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditText editText = findViewById(R.id.edittext);
    editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (s.toString().trim().length() <= 0) {
                editText.setError("This Field is required");
                editText.requestFocus();

            } else
                editText.setError(null);


        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
}

}