안드로이드 spinner 처음에 바로 작동이 되지 않는 이유?

조회수 468회

일단 앱 컨셉은 반복적으로 해야하는 일을 잊지않고 알려주기 위해 시간을 설정하고 버튼을 누르면 그 시간에 맞춰 notification이 오는 앱입니다.

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pickTime();
            }
        });

버튼을 누르면 pickTime()메서드를 부르게 설정했습니다.

pickTime() 메서드는

    public void pickTime() {
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @RequiresApi(api = Build.VERSION_CODES.KITKAT)
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                if(position == 1) {
                    System.out.println(position);
                    setClock1();
                } else if(position == 2) {
                    System.out.println(position);
                    setClock2();
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }

이렇고 setClock1()과 2는 AlarmReceiver.class를 부르는 메서드입니다. notification은 AlarmReceiver.class에 설정해뒀습니다.

spinner에 5분, 10분, 15분 이런식으로 시간이 들어가있는데 일단 확인을 위해 5분은 5초, 10분은 10초로 설정을 해놨습니다.

실행을 하고 시간을 스피너로 설정하고 버튼을 누르면 아무런 반응이 없습니다. 로그캣에 오류도 어떤 반응도 아무것도 안 뜨고요.

그러고 스피너를 다른 시간으로 설정하면 확인 버튼을 누르지 않아도 3초 쯤 후에 notification이 오고 그 이후엔 설정한 시간대로 notification이 옵니다.

그 이후에도 다른 시간으로 설정하고 확인 버튼을 누르지 않아도 알아서 notification이 옵니다... 그냥 스피너만 바꿔도 바뀐 시간으로 notification이 옵니다...

처음에 설정한 시간은 왜 반응이 없는지, 그리고 왜 버튼을 누르지 않아도 notification이 오는지 궁금합니다 ㅠㅠ

++안 되는 버튼을 연타하니 로그캣에 AUDIO_OUTPUT_FLAG_FAST denied by client 라고 뜹니다.

구글링을 해보니 속도 차이로 이게 뜨면서 소리가 안 나는거라고 하는데... 제가 5초로 설정을 해서 그런걸까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • button을 누르기 전에는 스피너의 리스너가 등록되어있지 않은 상태이기에 스피너를 누르셔도 setClock 함수가 동작하지 않습니다. 주동혁 2020.5.7 16:38
  • 그럼 버튼을 누르고 나서야 리스너가 등록이 되어서 그 다음 선택 된 스피너부터 동작이 된다는건가요? 스피너 리스너를 이리저리 옮겨봤는데도 잘 안 되는데 혹시 도움을 조금 더 주실 수 있나요...? 알 수 없는 사용자 2020.5.8 13:32

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)