나는 EditText 필드에서 사용자 입력을 검사하여 조건부를 트리거하려고합니다. 내가 EditText에서 logcat 로그 문자열을 인쇄 할 때 데이터 변경을 볼 수 있지만 값을 확인하는 String 함수는 항상 false를 반환합니다.Android에서 문자열 및 EditText 기능 문제가 발생했습니다.
if(((EditText)findViewById(R.id.drv_in)).getText().toString().equals("")) {
TX_FAIL_TEXT = "Missing Driver ID!";
}
Log.e("SMSDRVERR", ((EditText)findViewById(R.id.drv_in)).getText().toString());
이 코드는 항상 "누락 된 드라이버 ID!"를 표시합니다. 내가 성공하지, 이러한 다른 조건문을 시도했다 : 나는 데이터가 있음을 확인할 수 있습니다
(((EditText)findViewById(R.id.drv_in)).getText().toString().isEmpty()) //does not compile, says cannot find symbol, but the function is in the Android documentation
(((EditText)findViewById(R.id.drv_in)).getText().toString().length() < 1) //returns false, even for strings of length > 1
, 참으로, 로그 캣보고 내 데이터를 확인할 수 없음 널 (null)는 로그에 표시되지 않습니다. 조건부가 뭐가 잘못 됐어?
첫 번째 전송시 데이터를 삽입하지 않으면 오류가 발생하지 않습니다. 첫 번째 전송이 실패하면 데이터를 변경했는지 여부에 관계없이 모든 후속 전송이 실패합니다. 또한, 첫 번째 전송을 통과하면 모든 후속 전송을 전달합니다.
또한 아래의 전체 코드에 게시 된 다른 조건문도 있으며,이 조건문은 버튼을 처음 클릭 할 때만 평가됩니다.
transmit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//data validation
///////////////////////
boolean valid = true;
if(((EditText)findViewById(R.id.drv_in)).getText().toString().equals("")) {
TX_FAIL_TEXT = "Missing Driver ID!";
showDialog(DIALOG_FAIL);
TX_FAIL_TEXT = "Transmission Failed!"; //reset the dialog fail text to default
valid = false;
}
Log.e("SMSDRVERR", ((EditText)findViewById(R.id.drv_in)).getText().toString());
if(custSpn.getSelectedItemPosition() == 0) {
TX_FAIL_TEXT = "Missing Customer Selection!";
showDialog(DIALOG_FAIL);
TX_FAIL_TEXT = "Transmission Failed!"; //reset the dialog fail text to default
valid = false;
}
if(prdSpn.getSelectedItemPosition() == 0) {
TX_FAIL_TEXT = "Missing Product Selection!";
showDialog(DIALOG_FAIL);
TX_FAIL_TEXT = "Transmission Failed!"; //reset the dialog fail text to default
valid = false;
}
if(((Cursor)prdSpn.getItemAtPosition(prdSpn.getSelectedItemPosition())).getString(prdSpn.getSelectedItemPosition()).contains("CAR") ||
((Cursor)prdSpn.getItemAtPosition(prdSpn.getSelectedItemPosition())).getString(prdSpn.getSelectedItemPosition()).contains("AUTO") ||
((Cursor)prdSpn.getItemAtPosition(prdSpn.getSelectedItemPosition())).getString(prdSpn.getSelectedItemPosition()).contains("TRUCK")
) {
//must have make, license# and 1vin
if(((EditText)findViewById(R.id.make_in)).getText().toString().equals("")) {
TX_FAIL_TEXT = "Vehicle Entry:\n Missing Make/Model!";
showDialog(DIALOG_FAIL);
TX_FAIL_TEXT = "Transmission Failed!"; //reset the dialog fail text to default
valid = false;
}
if(((EditText)findViewById(R.id.tag_in)).getText().toString().equals("")) {
TX_FAIL_TEXT = "Vehicle Entry:\n Missing Tag Number!";
showDialog(DIALOG_FAIL);
TX_FAIL_TEXT = "Transmission Failed!"; //reset the dialog fail text to default
valid = false;
}
if(((EditText)findViewById(R.id.vin1_in)).getText().toString().equals("") ||
((EditText)findViewById(R.id.vin2_in)).getText().toString().equals("") ||
((EditText)findViewById(R.id.vin3_in)).getText().toString().equals("") ||
((EditText)findViewById(R.id.vin4_in)).getText().toString().equals("") ||
((EditText)findViewById(R.id.vin5_in)).getText().toString().equals("") ||
((EditText)findViewById(R.id.vin6_in)).getText().toString().equals("") ||
((EditText)findViewById(R.id.vin7_in)).getText().toString().equals("") ||
((EditText)findViewById(R.id.vin8_in)).getText().toString().equals("")
) {
TX_FAIL_TEXT = "Vehicle Entry:\n Missing VIN Number!";
showDialog(DIALOG_FAIL);
TX_FAIL_TEXT = "Transmission Failed!"; //reset the dialog fail text to default
valid = false;
}
}
//Log.e("smsDRVERR",((EditText)smsActivity.this.findViewById(R.id.drv_in)).getText().toString());
//begin transmission
///////////////////////
if(valid) {
showDialog(DIALOG_TX_PROGRESS);
Thread t = new Thread(txRunnable);
t.start();
} else {
//do things if needed
}
}
업데이트 : 첫 번째 전송시 데이터를 삽입하지 않으면 실패하지 않습니다. 첫 번째 전송이 실패하면 데이터를 변경했는지 여부에 관계없이 모든 후속 전송이 실패합니다. 또한, 첫 번째 전송을 통과하면 모든 후속 전송을 전달합니다. – moonlightcheese
else 문이 없습니다. 따라서 실패한 경우 TX_FAIL_TEXT가 "누락 된 드라이버 ID!"상태로 유지됩니다. – I82Much
죄송합니다. 원래 너무 많은 코드를 제외 시켰습니다. 약간의 수정으로 원본 게시물 아래에 전체 코드를 게시합니다. – moonlightcheese