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

Toast에러와 리턴타입이 없는 메서드안에서 변수를 밖으로 가져오는법

0 추천
public void aaa() {

.

.

.

buider.setPositiveButton("검색", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {    

tmapdata.findPathData(startpoint, endpoint, new FindPathDataListenerCallback() {
                    @Override
                    public void onFindPathData(TMapPolyLine polyLine) {
                        tmapview.addTMapPath(polyLine);
                        distance = polyLine.getDistance();
                        str_distance = String.format("%.0f", distance);
                        distance = Double.parseDouble(str_distance);

                        Toast.makeText(Oil_Price_Calculation.this, str_distance, Toast.LENGTH_SHORT).show();
                    }
                });

             }
        });

}

코드에 대한 간단하 설명은 aaa() 메서드에서 커스텀다이얼로그를 LayoutInflater해서 검색버튼을

눌렀을때 findPathData()메서드로 경로를 찾아서 맵에 표시해주는 것인데 이 소스에서 Toast를 사용하면

에러가나는데 이유를 모르겠습니다. 다른곳에 질문했을때 Toast UI쓰레드에서만 쓸수있다고 하는데

무슨소리인지는 확실히 이해가 안됩니다. 아니면 두지점의 경로를 표시한 라인의 길이인 distance 를

findPathData()메서드 밖으로 빼내주면 저 메서드 밖에서는 Toast를 사용할수 있는거 같은데 리턴타입이나

이런게 없는데 어떻게 빼내죠? 전역변수를 쓰기에는 초기화를 못해줘서 안되고요...
노안드 (180 포인트) 님이 2016년 12월 7일 질문

1개의 답변

0 추천

안녕하세요

에러나는 이유는 Android Monitor 창에 잘 나올텐데요...

아니면 언더라인 간다고 하면 그 메세지를 잘 읽어보시면 좋을 것 같습니다.

소스를 보고 유추해보면 이너 클래스 안에 

tmapdata.findPathData(startpoint, endpoint, new FindPathDataListenerCallback() {}); << 이부분

Oil_Price_Calculation.this << 이거를 참조치 못할 것 같아요

this 객체를 받아서 Context 객체를 만드시거나

getApplicationContext() 로 해보시면 좋을 것 같습니다.

수고하세요!

히로시 (10,800 포인트) 님이 2016년 12월 7일 답변
에러 메시지는 핸들러 어쩌고하면서 뜨는데 지금은 확인해볼수없어서 자세히는 모르겠구요. 그리고 원래는 getApplicationContext() 이걸로하다가 안되서 Oil_Price_Calculation.this 이걸로 한거거든요? 다른 방법은없나요? 굳이 Toast에러만 아니라 distance 값을 저 메서드 밖으로 가져나오고싶은데 어떻게 해야할까요?
...