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

프레그먼트 안의 쓰레드 안에 토스트 메시지 띄우기

0 추천
                public void success(List<RequestTable> requestTables, Response response) {
                    Log.i("Response", response+"");
                    getActivity().runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(getActivity(), "Hello World", Toast.LENGTH_SHORT).show();
                        }
                    });
                }
 
위 소스는 어느 Fragment 안에 Thread의 run()안에 있는 콜백 함수 입니다.
 
애초에 쓰레드에서 UI 요소를 컨트롤 할 수 없기 때문에 runOnUoThread랑 mainHandler를 사용하는 2가지 방법 모두 해보았지만
에러메시지는 똑같습니다.. 
 
실질적으로 토스트를 띄우는
Toast.makeText(getActivity(), "Hello World", Toast.LENGTH_SHORT).show();
이쪽에서 NullPinterException 에러가 납니다....

여기서 Null이면... getActivity()에서 문제가 이는 듯 한데.. 
그래서 
rootView.getContext, getActivity().getBaseContext(), ((MainActivity)MainActivity.mContext) 등등..
많은 것을 시도해봤지만 계속 널입니다 ㅠㅠ
 
"쓰레드안에 토스트 사용"은 검색하도 많이 나오는데 
"프레그먼트 -> 쓰레드 안에 토스트 사용" 은 예제를 찾기가 힘드네요..
 
도와주십쇼 ㅠㅠ
cmsypub (820 포인트) 님이 2015년 7월 22일 질문

2개의 답변

0 추천
Toast의 Context는 Activity를 굳이 가져 오지 않아도 상관 없습니다.

 

간단하게 쓰는 방법은 Application 클래스나 Activity의 Context를 static으로 올린 다음에 쓰셔도 상관 없어요.

 

MainActivity instance = null;
 

---- onCreate()

instance = this;

 

---- public static void showToast(String msg)

---- Toast.makeText(MainActivity.instance, msg, time).show();
갈무리 (12,430 포인트) 님이 2015년 7월 23일 답변
0 추천

 getActivity() 가 널이 날일이 없는데....

플레그먼트 안에 재대로 작성하신게 맞나 의심스럽습니다~!

코드전문이 있다면 도움이 될 듯 합니다.

ThisPlus (46,920 포인트) 님이 2015년 7월 23일 답변
...