很多天以来,我一直在努力理解为什么我在网上找到的帮助无法解决我的问题,所以我认为最好的选择就是在这里提问。
作为一个旁注,我知道我的变量名不是最好的,并且在进入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");
}
但是这些似乎都不允许我在不崩溃的情况下将字段留空。我尝试了十多种不同的方法,但我意识到它们是浪费时间,因为它们无法工作-至少我已经学会了在哪里可以使用它们。
非常感谢您的帮助。
答案 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) {
}
});
}
}