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

ble로 값을 받아오는데, handler문제가..

0 추천

안녕하세요.

공홈ble 샘플 소스와 구글링을 해서..어렵게 블루투스->모바일기기로 값을 전달받는데 성공했습니다.

요 받은 값을 toast로 띄워주고, 특정 이미지도 띄워주려고 하는데요.

핸들러 개념이 제대로 잡히지 않아 자꾸 오류가 발생합니다..

 

public static void onCharacteristicChanged(int value) 
		{
			if()...생략
			else if (value == 31)
			{
				Log.d("value is 31","31");
				
				Message msg = mHandler.obtainMessage();
				msg.what = MESSAGE31;
				msg.obj = value;
				mHandler.sendMessage(msg);
			}
		}

이 부분이 블루투스값을 받아온 부분이구요.

여기서 ui를 변경시키기 위해 핸들러를 사용했습니다. [토스트 팝업 및 이미지 팝업]

private final static Handler mHandler = new Handler() {
        public void handleMessage(Message msg) 
        {
            switch (msg.what) 
            {
            case MESSAGE31:
            	//Toast.makeText(getInstance(), "ggggggg31", Toast.LENGTH_SHORT).show();
            	Log.d("sdfasdfsadfsadf","wetqwetweteee");
            	break;
 
            }
        }
    };

현재는 토스트에서 오류가 나서 주석처리를 했지만, log는 잘 띄워지더군요..;

아무리 읽어도 핸들러 개념을 정확히 모르겠습니다 ㅠㅠ 고수님들의 도움 부탁드립니다..긴글 읽어주셔서 감사합니다.

anci (19,950 포인트) 님이 2015년 1월 14일 질문

1개의 답변

+1 추천
 
채택된 답변

문제가 뭔가요?

Toast띄우는게   문제라는 말씀 이신가요?

그거라면 toast 띄울 때 맨처음 파라메터로 넣는   Context 값이 잘 못 되어서 오류가 나는 겁니다.

app의 Context를 사용하게 변경하세요.

ex) static Context mContext = null; 

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = this;
     }

private final static Handler mHandler = new Handler() {

        public void handleMessage(Message msg)
        {
            ... .... 
            if(mContext != null)
                  Toast.makeText(mContext, "ggggggg31", Toast.LENGTH_SHORT).show();
        }

 

 

 

사악미소 (65,330 포인트) 님이 2015년 1월 14일 답변
anci님이 2015년 1월 14일 채택됨
아 감사합니다..기존의 소스에서 사용했던 겟인스텐스를 그대로 사용해서 오류가 났던것이군요..ㅠㅠ..context에 대해서도 다시 공부하겠습니다. 답변 감사합니다.
...