답변:
나는 이런 일을 한 번했다;
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가 의미 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를 유효성 검사하려면 ShowText 및 Edit Error # setError 메서드를 사용하고 show error 및 비어 있거나 null 값을 확인하려면 내장 안드로이드 클래스 TextUtils.isEmpty (strVar) 를 사용하십시오. strVar가 null이거나 길이가 0이면 true를 반환합니다.
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 (CharSequence str) 를 추가해야합니다.
문자열이 null이거나 길이가 0이면 true를 반환합니다.
따라서 다섯 개의 EditText를 목록에 넣으면 전체 코드는 다음과 같습니다.
for(EditText edit : editTextList){
if(TextUtils.isEmpty(edit.getText()){
// EditText was empty
// Do something fancy
}
}
isEmpty()
소요 CharSequence
되는 Editable
확장, 그래서 호출 할 필요가 없습니다 .toString()
그것에는.
이 시도
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가 제안한 것을하지만 다른 방법으로한다. 이중 부정 대신 긍정적 결과를 확인하여 코드를 이해하는 것이 더 쉽다는 것을 알게되었습니다. 빈 EdiText를 확인하는 방법을 요구할 수도 있지만 실제로 알고 싶은 것은 내용이 있고 비어 있지 않은지 여부입니다.
이렇게 :
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
내용 확인을 중단했기 때문에 예외를 피하기 위해 기본적으로 "내용 없음"(또는 ) 을 반환하는 것을 선호합니다 . 그런 식으로 당신은 절대적으로 확신합니다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 조건에서 모든 EditText 문자열을 확인할 수도 있습니다.
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 }
매력처럼 일했다.
"이것이 마음에 드는지 확인하십시오."
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);
}
}
});
이 짧은 코드를 사용하면 문자열의 시작과 끝에서 빈 공간을 삭제할 수 있습니다. 문자열이 ""이면 "error"메시지를 반환하고 그렇지 않으면 문자열을
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();
}
사용 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!");
}
}
}
});
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();
}
물론이 패턴은 여러보기에서 속성을 확인하도록 확장 할 수 있습니다. 호출 할 수있는 유일한 단점은 뷰의 중복성입니다. 즉, 해당 EditText를 사용하려면 단일 변수에 바인드해야 이름으로 변수를 참조하거나 목록에서 위치별로 변수를 참조해야합니다 ( edits.get(0)
등). 개인적으로, 나는 그들 각각을 두 번, 단일 변수에 한 번, 목록에 한 번 바인딩하고 적절한 것을 사용합니다.
이것을 시도하십시오 : 그것의 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()
}
}
감사합니다
비공개 void 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();
}
}
}