마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 php db연동 후 받아온값이 true임에도 if문이 동작을 안합니다.

0 추천

안드로이드로 php -> db연동을 하여 일정 조건이 맞을 때 echo 로 "true"를 받아와서 안드로이드에 true를 받아온것까지 로그에 나옵니다 근데 if문이 제대로 동작하지 않는데 어떻게 해야할까요 ㅠ 제가 중요한걸 놓치고 있는건가요? 

익명사용자 님이 2017년 6월 12일 질문

1개의 답변

0 추천
안 될만한  원인이 다양해서, 코드만 봐서는 알 수 없네요..

1.   true 문자 앞뒤에 공백이나 개행 문자 같은게 있을 수 있으니 trim 해 비교 해 보세요.

2.  handler로 post로 동작 시켯는데 handler가 null이라 Exception이 났을 수도 있고, post라 handler에서 다른 동작을 수행 중이라면, 그 동작이 끝나기 전까지 대기하고 있을 가능성도 있습니다.

3. intent의 경우 Android Manifest에  staffMainActivity에 대해 선언이 안되어 있어서 못 찾을 가능성도 있습니다.

한개씩 점검 해 보세요..
익명사용자 님이 2017년 6월 12일 답변
ㅠ 조건문을 지웠을 때  handler 와 intent는 문제없이 실행이됩니다만
문제는 조건문에서 조건을 제대로 못알아듣는다고 해야할까요.. 분명 resultData 값을 log.d로 찍어보면 true라고 나오지만 조건문에서 값을 비교해보면 else로 넘어가버립니다..
그럼 2~3번은 문제가 아닐듯 하고, 1번 사항에 대해 체크 해 보셔야 할 듯 합니다.

로그에 true가 찍히더라도,
"true" 가 아니라 " true" 혹은 "true " , "true\r\n" "true\n"  같은 것일 가능성이 있습니다.
public static String byteArrayToHex(byte[] a) {
   StringBuilder sb = new StringBuilder(a.length * 2);
   for(byte b: a)
      sb.append(String.format("%02x", b));
   return sb.toString();
}


log.d("dbconnect", byteArrayToHex(resultData.getByte());
와 같이 스트링 값을 헥사로 데이터를 찍어보시고, 추가로 들어간 문자를 제거 해 보세요.
...