2013-03-14 2 views
1

여기에 제 코드가 있습니다. 무엇이 잘못되었는지 잘 모릅니다. 하지만 작동하지 않습니다! 이상적으로 내가 원하는 모든 textviews가 비어있는 경우는 "저장"다른 "세부 사항을 작성하십시오"또는 토스트해야하지만, 일부는 항상 "저장"토스트 방법비밀번호를 응용 프로그램에 잠그려고 시도했지만 해당 작업이 수행되지 않습니다

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends Activity implements OnClickListener { 

EditText et1; 
EditText et2; 
EditText et3; 
EditText et4; 
EditText et5; 
Button b; 

FileOutputStream fos1; 
FileOutputStream fos2; 
FileOutputStream fos3; 
FileOutputStream fos4; 


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

    et1=(EditText) findViewById(R.id.editText1); 
    et2=(EditText) findViewById(R.id.editText2); 
    et3=(EditText) findViewById(R.id.editText3); 
    et4=(EditText) findViewById(R.id.editText4); 
    et5=(EditText) findViewById(R.id.editText5); 

    b=(Button) findViewById(R.id.button1); 


    b.setOnClickListener(this); 
} 




@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

    String password=et1.getText().toString(); 
    String confirmPassword=et2.getText().toString(); 
    String secQues=et3.getText().toString(); 
    String secAns=et4.getText().toString(); 
    String hint=et5.getText().toString(); 


    if(password!=null && confirmPassword!=null && secQues!=null && secAns!=null && hint!=null) 
    { 
     Toast.makeText(MainActivity.this, "saved", Toast.LENGTH_SHORT).show(); 
    } 
    else 
    { 
     Toast.makeText(MainActivity.this, "Please fill all the details.", Toast.LENGTH_SHORT).show(); 
    } 
} 

} 

답변

1

이 문자열은 항상 있기 때문에하지 null 될 것입니다 EditTexts에 의해 생성됩니다. 그러나 얻은 문자열은 길이가 0 인 빈 문자열 ("")이 될 수 있습니다. 즉, 문자열 길이를 대신 비교해야합니다. TextUtils will work much better here :

if(!TextUtils.isEmpty(password) && !TextUtils.isEmpty(confirmPassword) && !TextUtils.isEmpty(secQues) && !TextUtils.isEmpty(secAns) && !TextUtils.isEmpty(hint)){ 
    Toast.makeText(MainActivity.this, "saved", Toast.LENGTH_SHORT).show(); 
} 

EditTexts을 많이 가지고 또한 있기 때문에, 검사의 더 좋은 방법은, EditTexts의 배열을 반복하고 길이를 확인하는 것입니다. empty가 발견되면 boolean 플래그를 false로 설정하고 루프를 종료하십시오.

boolean noneEmpty = true; 

for (int x =0; x < editTextArray.length;x++) 
{ 
    if (TextUtils.isEmpty(editTextArray[x].getText())) 
    { 
    noneEmpty = false; 
    break; 
    } 
} 

if(noneEmpty){ 
    Toast.makeText(MainActivity.this, "saved", Toast.LENGTH_SHORT).show(); 
} 
else{ 
    Toast.makeText(MainActivity.this, "Please fill all the details.", Toast.LENGTH_SHORT).show(); 
} 
관련 문제