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

Toast에 대해서 한가지만 더 여쭤보고싶습니다.. 정말 죄송합니다. 부탁드립니다!

0 추천

안녕하세요 읽어주셔서 정말 감사합니다!

아래는 전체 코드는 아니고 일부 코드입니다.. (비콘 관련 코드입니다.)

비콘신호와 핸드폰 블루투스 간에 무한으로 연결을 주고 받아서

audiomode가 0이나 1인 신호를 잡을때마다 해당 토스트 문구가 무한으로 뜹니다. 

그래서 불편해서 맨처음 audiomode가 0이거나 1인 신호를 잡았을때 딱 1번만 토스트문구를 보여주고

더이상 안뜨게 하고 싶은데 이리저리 찾아봐도 이런 부분에 대한 설명은 찾기 힘드네요.. 

Toast.makeText() 함수에서 맨 마지막 인수인 int duration부분을 정수로도 표현가능하다고 해서 숫자로 조절해보려고 했는데 전 숫자로 바꾸면 빨간줄이 뜹니다.

다른 방법이 있을까요.. 도와주시면 정말 감사드리겠습니다. 읽어주셔서 정말 감사합니다!!

 

String str = viewHolder.recoAccuracy.getText().toString();
double testNum = Double.valueOf(str).doubleValue();
int Flagint = 0;
int AudioMode1 = 0;
int AudioMode2 = 0;

if(testNum <= 0.3) {
    mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
    Flagint = 1;
}
else if (testNum >= 0.31) {
    mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
    Flagint = 2;
}

if(Flagint == 1) {
    if(AudioMode1 == 0) {
        Toast.makeText(parent.getContext(), "스마트폰이 무음이 되었습니다.", Toast.LENGTH_LONG).show();
        AudioMode1 = 1;
        AudioMode2 = 0;
        
    }
}
else if(Flagint == 2) {
    if(AudioMode2 == 0) {
        Toast.makeText(parent.getContext(), "정해진 지역을 벗어나 음성으로 변환되었습니다.", Toast.LENGTH_LONG).show();
        AudioMode2 = 1;
        AudioMode1 = 0;
    }
}

 

낮해밤별 (400 포인트) 님이 2016년 10월 16일 질문

1개의 답변

+1 추천
 
채택된 답변

Toast 클래스에 아래와 같이 makeText 메소드가 2개 정의되어 있습니다.(overloading) 
https://developer.android.com/reference/android/widget/Toast.html

public static Toast makeText(Context context, int resId, int duration)

public static Toast makeText(Context context, CharSequence text, int duration)

아마도 님이 위의 메소드를 사용하실 때 매개변수를 잘못 넘긴 것으로 보입니다. 메소드의 정의를 한번 곰곰히 살펴보시면 왜 그런지 답이 나올 겁니다. (resId는 문자열을 넣은 대신 스트링 리소스 파일에서 값을 읽어오기 윈한 리소스의 id입니다.) 그리고 이 메소드들의 리턴값이 Toast 객체입니다.

그리고 Toast class에 다음과 같은 메소드가 있습니다.

cancel()

Close the view if it's showing, or don't show it if it isn't showing yet.

이미 화면에 떠있는 토스트를 없애기 위해서 사용할 수 있습니다. 

토스트메세지를 보여줄 때 그걸 멤버변수 같은데 저장하고 토스트가 null이 아니면  cancel하시고 새로운 토스트를 띄워주면 됩니다.

 

spark (227,830 포인트) 님이 2016년 10월 16일 답변
낮해밤별님이 2016년 10월 16일 채택됨
정말 감사합니다 정말 큰 도움되었습니다. 아까 전 질문에 이어서 또 답글달아주시니 정말 영광입니다. 감사합니다!! 다시해보겠습니다!!
...