ฉันมี 5 EditTexts
ใน android สำหรับผู้ใช้ที่จะป้อน ฉันต้องการทราบว่าฉันสามารถมีวิธีการตรวจสอบทั้ง 5 EditTexts
ถ้าพวกเขาเป็นโมฆะ มีวิธีการทำเช่นนี้หรือไม่?
ฉันมี 5 EditTexts
ใน android สำหรับผู้ใช้ที่จะป้อน ฉันต้องการทราบว่าฉันสามารถมีวิธีการตรวจสอบทั้ง 5 EditTexts
ถ้าพวกเขาเป็นโมฆะ มีวิธีการทำเช่นนี้หรือไม่?
คำตอบ:
ฉันทำอะไรแบบนี้สักครั้ง
EditText usernameEditText = (EditText) findViewById(R.id.editUsername);
sUsername = usernameEditText.getText().toString();
if (sUsername.matches("")) {
Toast.makeText(this, "You did not enter a username", Toast.LENGTH_SHORT).show();
return;
}
private boolean isEmpty(EditText etText) {
if (etText.getText().toString().trim().length() > 0)
return false;
return true;
}
หรือตามaudrius
private boolean isEmpty(EditText etText) {
return etText.getText().toString().trim().length() == 0;
}
ถ้าฟังก์ชันส่งคืนfalse
หมายถึง edittext is not empty
และ return true
หมายความว่า edittext คือempty
...
return etText.getText().toString().trim().length() == 0
แทนสาขาจริง / เท็จ?
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}
VS 2019
สำหรับการตรวจสอบความถูกต้องของ EditText ใช้EditText # setError วิธีการแสดงข้อผิดพลาดและการตรวจสอบค่าว่างหรือค่าว่างใช้คลาส Android inbuilt TextUtils.isEmpty (strVar)ซึ่งคืนค่าจริงถ้า strVar เป็นศูนย์หรือความยาวศูนย์
EditText etUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = etUserName.getText().toString();
if(TextUtils.isEmpty(strUserName)) {
etUserName.setError("Your message");
return;
}
)
ในคำสั่ง if
usernameEditText
คือEditText
วัตถุและตอนนี้มันเปลี่ยนชื่อเป็น etUserName
.toString();
ไม่จำเป็นต้องใช้
ลองนี้:
EditText txtUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = usernameEditText.getText().toString();
if (strUserName.trim().equals("")) {
Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
return;
}
หรือใช้คลาสTextUtilsดังนี้:
if(TextUtils.isEmpty(strUserName)) {
Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
return;
}
มาสายปาร์ตี้กันที่นี่ แต่ฉันต้องเพิ่มTextUtils.isEmptyของ Android ของตัวเอง(CharSequence str)
ผลตอบแทนจริงถ้าสตริงเป็นโมฆะหรือ 0 ความยาว
ดังนั้นถ้าคุณใส่ EditTexts ห้ารายการในรายการรหัสเต็มจะเป็น:
for(EditText edit : editTextList){
if(TextUtils.isEmpty(edit.getText()){
// EditText was empty
// Do something fancy
}
}
isEmpty()
ยิงCharSequence
ซึ่งEditable
ขยายจึงมีจำเป็นต้องโทรไม่.toString()
เกี่ยวกับมัน
คำตอบอื่น ๆ นั้นถูกต้อง แต่ทำในทางสั้น ๆ เช่น
if(editText.getText().toString().isEmpty()) {
// editText is empty
} else {
// editText is not empty
}
ลองสิ่งนี้
TextUtils.isEmpty(editText.getText());
ทำไมไม่เพียงแค่ปิดการใช้งานปุ่มถ้า EditText ว่างเปล่า IMHO ซึ่งดูเป็นมืออาชีพมากขึ้น:
final EditText txtFrecuencia = (EditText) findViewById(R.id.txtFrecuencia);
final ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleStartStop);
txtFrecuencia.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
toggle.setEnabled(txtFrecuencia.length() > 0);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
});
คุณสามารถใช้จากlength()
EditText
public boolean isEditTextEmpty(EditText mInput){
return mInput.length() == 0;
}
ฉันมักจะทำสิ่งที่SBJเสนอ แต่วิธีอื่น ๆ ฉันเพียงเข้าใจว่าโค้ดของฉันง่ายขึ้นโดยการตรวจสอบผลลัพธ์ที่เป็นบวกแทนที่จะเป็นเชิงลบสองชั้น คุณอาจจะถามถึงวิธีตรวจสอบ EdiTexts ที่ว่างเปล่า แต่สิ่งที่คุณต้องการทราบจริงๆก็คือถ้ามันมีเนื้อหาใด ๆ และไม่ใช่ว่ามันไม่ว่างเปล่า
ชอบมาก
private boolean hasContent(EditText et) {
// Always assume false until proven otherwise
boolean bHasContent = false;
if (et.getText().toString().trim().length() > 0) {
// Got content
bHasContent = true;
}
return bHasContent;
}
เนื่องจากSBJฉันต้องการส่งคืน "ไม่มีเนื้อหา" (หรือfalse
) เป็นค่าเริ่มต้นเพื่อหลีกเลี่ยงข้อยกเว้นเนื่องจากฉัน borked ตรวจสอบเนื้อหาของฉัน ด้วยวิธีนี้คุณจะมั่นใจได้อย่างแน่นอนว่าtrue
เช็คของคุณผ่านการอนุมัติแล้ว
ฉันก็คิดว่าการif
โทรมันดูสะอาดกว่าด้วย:
if (hasContent(myEditText)) {
// Act upon content
} else {
// Got no content!
}
มันขึ้นอยู่กับความชอบ แต่ฉันพบว่ามันอ่านง่ายกว่า :)
ฉันใช้วิธีนี้ที่ใช้trim()
เพื่อหลีกเลี่ยงช่องว่าง:
EditText myEditText = (EditText) findViewById(R.id.editUsername);
if ("".equals(myEditText.getText().toString().trim()) {
Toast.makeText(this, "You did not enter a value!", Toast.LENGTH_LONG).show();
return;
}
ตัวอย่างถ้าคุณมี EditText หลายอัน
if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
return;
}
if(TextUtils.isEmpty(textA.getText())){
showToast(it's Null");
}
คุณสามารถใช้ TextUtils.isEmpty เช่นตัวอย่างของฉัน! โชคดี
private boolean hasContent(EditText et) {
return (et.getText().toString().trim().length() > 0);
}
ฉันใช้TextUtils
สิ่งนี้:
if (TextUtils.isEmpty(UsernameInfo.getText())) {
validationError = true;
validationErrorMessage.append(getResources().getString(R.string.error_blank_username));
}
นอกจากนี้คุณยังสามารถตรวจสอบ EditText Strings ทั้งหมดในหนึ่งเงื่อนไขถ้าเช่นนี้
if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
}
ฉันต้องการทำสิ่งที่คล้ายกัน แต่การรับค่าข้อความจากการแก้ไขข้อความและการเปรียบเทียบมัน(str=="")
ไม่ได้ผลสำหรับฉัน ตัวเลือกที่ดีกว่าคือ:
EditText eText = (EditText) findViewById(R.id.etext);
if (etext.getText().length() == 0)
{//do what you want }
ทำงานเหมือนจับใจ
ลองใช้การใช้หากเงื่อนไขอื่น ๆ คุณสามารถตรวจสอบเขตข้อมูลแก้ไขข้อความของคุณได้อย่างง่ายดาย
if(TextUtils.isEmpty(username)) {
userNameView.setError("User Name Is Essential");
return;
} else if(TextUtils.isEmpty(phone)) {
phoneView.setError("Please Enter Your Phone Number");
return;
}
คุณสามารถเรียกใช้ฟังก์ชันนี้สำหรับแต่ละข้อความแก้ไข:
public boolean isEmpty(EditText editText) {
boolean isEmptyResult = false;
if (editText.getText().length() == 0) {
isEmptyResult = true;
}
return isEmptyResult;
}
EditText txtUserID = (EditText) findViewById(R.id.txtUserID);
String UserID = txtUserID.getText().toString();
if (UserID.equals(""))
{
Log.d("value","null");
}
คุณจะเห็นข้อความใน LogCat ....
"ลองดูสิฉันแน่ใจว่าคุณจะชอบ"
log_in.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
username=user_name.getText().toString();
password=pass_word.getText().toString();
if(username.equals(""))
{
user_name.setError("Enter username");
}
else if(password.equals(""))
{
pass_word.setError("Enter your password");
}
else
{
Intent intent=new Intent(MainActivity.this,Scan_QRActivity.class);
startActivity(intent);
}
}
});
ใช้TextUtils.isEmpty("Text here");
สำหรับรหัสบรรทัดเดียว
ด้วยรหัสย่อนี้คุณสามารถลบพื้นที่ว่างที่จุดเริ่มต้นและจุดสิ้นสุดของสตริง หากสตริงเป็น "" ส่งคืนข้อความ "ผิดพลาด" มิฉะนั้นคุณจะต้องเป็นสตริง
EditText user = findViewById(R.id.user);
userString = user.getText().toString().trim();
if (userString.matches("")) {
Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
return;
}else{
Toast.makeText(this, "Ok", Toast.LENGTH_SHORT).show();
}
EditText edt=(EditText)findViewById(R.id.Edt);
String data=edt.getText().toString();
if(data=="" || data==null){
Log.e("edit text is null?","yes");
}
else {
Log.e("edit text is null?","no");
}
ทำเช่นนี้เพื่อแก้ไขข้อความทั้งห้า
คุณสามารถใช้setOnFocusChangeListener
มันจะตรวจสอบเมื่อมีการเปลี่ยนแปลงโฟกัส
txt_membername.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
if (arg1) {
//do something
} else {
if (txt_membername.getText().toString().length() == 0) {
txt_membername
.setError("Member name is not empty, Plz!");
}
}
}
});
if ( (usernameEditText.getText()+"").equals("") ) {
// Really just another way
}
ฉันชอบใช้การโยงรายการButterKnifeแล้วใช้การดำเนินการกับรายการ ตัวอย่างเช่นกับกรณีของ EditTexts ฉันมีการกระทำที่กำหนดเองต่อไปนี้ที่กำหนดไว้ในคลาสยูทิลิตี้ (ในกรณีนี้ButterKnifeActions
)
public static <V extends View> boolean checkAll(List<V> views, ButterKnifeActions.Check<V> checker) {
boolean hasProperty = true;
for (int i = 0; i < views.size(); i++) {
hasProperty = checker.checkViewProperty(views.get(i), i) && hasProperty;
}
return hasProperty;
}
public static <V extends View> boolean checkAny(List<V> views, ButterKnifeActions.Check<V> checker) {
boolean hasProperty = false;
for (int i = 0; i < views.size(); i++) {
hasProperty = checker.checkViewProperty(views.get(i), i) || hasProperty;
}
return hasProperty;
}
public interface Check<V extends View> {
boolean checkViewProperty(V view, int index);
}
public static final ButterKnifeActions.Check<EditText> EMPTY = new Check<EditText>() {
@Override
public boolean checkViewProperty(EditText view, int index) {
return TextUtils.isEmpty(view.getText());
}
};
และในรหัสมุมมองฉันผูก EditTexts กับรายการและใช้การกระทำเมื่อฉันต้องการตรวจสอบมุมมอง
@Bind({R.id.edit1, R.id.edit2, R.id.edit3, R.id.edit4, R.id.edit5}) List<EditView> edits;
...
if (ButterKnifeActions.checkAny(edits, ButterKnifeActions.EMPTY)) {
Toast.makeText(getContext(), "Please fill in all fields", Toast.LENGTH_SHORT).show();
}
และแน่นอนว่ารูปแบบนี้สามารถขยายได้เพื่อตรวจสอบคุณสมบัติใด ๆ ในจำนวนการดู ข้อเสียเพียงอย่างเดียวถ้าคุณสามารถเรียกมันว่าเป็นความซ้ำซ้อนของมุมมอง ความหมายในการใช้ EditTexts เหล่านั้นคุณจะต้องผูกกับตัวแปรเดียวเช่นกันเพื่อให้คุณสามารถอ้างอิงพวกเขาด้วยชื่อหรือคุณจะต้องอ้างอิงพวกเขาโดยตำแหน่งในรายการ ( edits.get(0)
ฯลฯ ) โดยส่วนตัวฉันเพิ่งผูกแต่ละครั้งสองครั้งหนึ่งครั้งเพื่อตัวแปรเดียวและอีกครั้งหนึ่งไปยังรายการและใช้แล้วแต่ความเหมาะสม
หากต้องการแก้ไขข้อความว่างลองอีกวิธีง่ายๆดังนี้:
String star = editText.getText().toString();
if (star.equalsIgnoreCase("")) {
Toast.makeText(getApplicationContext(), "Please Set start no", Toast.LENGTH_LONG).show();
}
ลองใช้ดูสิ: มันอยู่ใน Kotlin
//button from xml
button.setOnClickListener{
val new=addText.text.toString()//addText is an EditText
if(new=isNotEmpty())
{
//do something
}
else{
new.setError("Enter some msg")
//or
Toast.makeText(applicationContext, "Enter some message ", Toast.LENGTH_SHORT).show()
}
}
ขอบคุณ
การทำงานต่อไปนี้สำหรับฉันทั้งหมดในหนึ่งคำสั่ง:
if(searchText.getText().toString().equals(""))
Log.d("MY_LOG", "Empty");
ก่อนอื่นฉันดึงข้อความจากEditText
และจากนั้นแปลงเป็นสตริงและเปรียบเทียบกับวิธี""
ใช้ใน.equals
ที่สุด
โมฆะส่วนตัว checkempForm () {
EditText[] allFields = { field1_txt, field2_txt, field3_txt, field4_txt};
List<EditText> ErrorFields =new ArrayList<EditText>();//empty Edit text arraylist
for(EditText edit : allFields){
if(TextUtils.isEmpty(edit.getText())){
// EditText was empty
ErrorFields.add(edit);//add empty Edittext only in this ArayList
for(int i = 0; i < ErrorFields.size(); i++)
{
EditText currentField = ErrorFields.get(i);
currentField.setError("this field required");
currentField.requestFocus();
}
}
}