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

String문자열 관련 질문입니다.

0 추천

아두이노에서 데이터값을 보내고 안드로이드에서 데이터 값을 받을때마다 index을 이용해서 

이미지들을 보이고 숨기는걸 하고있는데요 

다음과 같이 데이터가 "u"같은 데이터가 들어가면 이미지가 출력이 되게 했습니다

데이터가 처음 들어가면1번 이미지가 나오고 10번 이상 데이터값을 보내줘야 2번 이미지가 출력이 되는데 

어딜 수정해야 도나요?

조언주시면 감사하겠습니다.

void OnBluetoothMessage(String p_received) {

    Log.d("Content_Main","Content_Main received : "+p_received );

    readMessage = p_received;

    if(readMessage.equals("u")){
        if(readMessage != null) { // readmessage와 null(빈값)은 같지 않다
            int index1 = btcount %5;
            if(index1 == 0){
                btn1.setVisibility(View.VISIBLE);
                btn2.setVisibility(View.INVISIBLE);
                btn3.setVisibility(View.INVISIBLE);
                btn4.setVisibility(View.INVISIBLE);
                mode_text.setText("V_mode01");
            }
            if(index1 == 1){
                btn1.setVisibility(View.INVISIBLE);
                btn2.setVisibility(View.VISIBLE);
                btn3.setVisibility(View.INVISIBLE);
                btn4.setVisibility(View.INVISIBLE);
                mode_text.setText("V_mode02");
            }
            if(index1 == 2){
                btn1.setVisibility(View.INVISIBLE);
                btn2.setVisibility(View.INVISIBLE);
                btn3.setVisibility(View.VISIBLE);
                btn4.setVisibility(View.INVISIBLE);
                mode_text.setText("V_mode03");
            }
            if(index1 == 3){
                btn1.setVisibility(View.INVISIBLE);
                btn2.setVisibility(View.INVISIBLE);
                btn3.setVisibility(View.INVISIBLE);
                btn4.setVisibility(View.VISIBLE);
                mode_text.setText("V_mode04");
            }
            if(index1 == 4){
                btn1.setVisibility(View.INVISIBLE);
                btn2.setVisibility(View.INVISIBLE);
                btn3.setVisibility(View.INVISIBLE);
                btn4.setVisibility(View.INVISIBLE);
                mode_text.setText("");
            }
            btcount++;


        }
        else if(readMessage == null){
            readMessage = str;

        }

    }

 

익명사용자 님이 2018년 10월 31일 질문

2개의 답변

0 추천

데이터가 10번 이상 들어오면 2번째 나오게 하신다고 하셨으니

int index1 = btcount %5;  => int index1 = btcount / 10;

으로 바꾸면 btcount가 10이 될때 if(index1 == 1) 로 들어갈 꺼에요 거기에다가

이미지 노출되게 처리하시면 될꺼구요
 

비뢰광 (7,400 포인트) 님이 2018년 10월 31일 답변
0 추천
if(readMessage.equals("u")) {
  if (readMessage != null) {

  }
}

는 이미 readMessage 가 null이면 처음부터 오류가 나니 

if("u".equals(readMessage)){
  
}

이렇게 바꾸는게 나을 것 같습니다. 

 

if ("u".equals(readMessage)) {
  int index1 = btcount % 5;

  btn1.setVisibility(index1 == 0 ? View.VISIBLE : View.INVISIBLE);
  btn2.setVisibility(index1 == 1 ? View.VISIBLE : View.INVISIBLE);
  btn3.setVisibility(index1 == 2 ? View.VISIBLE : View.INVISIBLE);
  btn4.setVisibility(index1 == 3 ? View.VISIBLE : View.INVISIBLE);

  if (index1 == 0) {
    mode_text.setText("V_mode01");
  }
  else if (index1 == 1) {
    mode_text.setText("V_mode02");
  }
  else if (index1 == 2) {
    mode_text.setText("V_mode03");
  }
  else if (index1 == 3) {
    mode_text.setText("V_mode04");
  }
  else if (index1 == 4) {
    mode_text.setText(null);
  }
  btcount++;
}
else if (TextUtils.isEmpty(readMessage)) {
  readMessage = str;
}

전체적으로 이렇게 간소화할 수 있을 것 같아요. 


btcount 가 의심스러운데, 저 값이 어떻게 변하고 있는지 확인해보세요.

쎄미 (162,410 포인트) 님이 2018년 10월 31일 답변
쎄미님이 2018년 10월 31일 수정
...