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

toast 메시지 띄우기

0 추천

안녕하세요. 독학으로 공부중인 왕초보입니다. 비전공자에 개발경험 전무해서 너무 어렵네요...

일전에 들었던 인강 샘플코드를 가지고

모 게임 개발자센터에서 발급받은 api키를 통해 정보를 불러오는것 까진 성공했는데..

검색결과가 없을 시 사용자에게toast 메시지를 띄우기 위해 아래와 같이 소스를 작성하였습니다

buffered reader를 통해 읽어온 내용을 readline으로 읽어 str에 담고 그 값이 없으면(검색결과가 없으면)

else 구문 뒤에 작성된 toast 관련 코드를 동작시키고 싶습니다.

현재 안드로이드 스튜디오에서 띄워주고 있는 오류 메시지는 아래와 같이 나오고 있습니다.

Cannot resolve method 'makeText(com.example.myapplication.MainActivity.NetworkThread, java.lang.String, int)'

어떻게 해야 정상적으로 동작할 수 있을지.. 고수님들의 많은 가르침 부탁드립니다.

감사합니다.

InputStream is = conn.getInputStream();
InputStreamReader isr = new InputStreamReader(is,"UTF-8");
BufferedReader br = new BufferedReader(isr);

String str = null;
StringBuffer buf = new StringBuffer();

do{
    str = br.readLine();
    if(str != null){
        buf.append(str);
    } else {
        Toast noCoach = Toast.makeText(this,"검색결과가 없습니다.", Toast.LENGTH_LONG);
        noCoach.show();
    }

} while(str != null);

String data = buf.toString()
케이엠팍 (250 포인트) 님이 2021년 11월 29일 질문

1개의 답변

0 추천

겪고 계신 문제는 자바 문법 문제입니다.

Cannot resolve method 'makeText(com.example.myapplication.MainActivity.NetworkThread, java.lang.String, int)'

위의 에러메세지가 의미하는 바는 다음과 같습니다.

Toakst.makeText 를 찾아보시면 첫번째 인자가 Context 입니다. 따라서 Context나 Context를 상속받은 클래스만 여기에 와야 합니다. MainActivity.NetworkThread는 Context와 관련이 없을 겁니다.  아래 처럼 MainActivity.this로 해서 MainActivity를 강제로 지정해 줄 수 있습니다.

Toast noCoach = Toast.makeText(MainActity.this,"검색결과가 없습니다." 

 

그리고 do whiile 안에서 토스트를 띄우지 말고 루프밖에서 데이터가 없다는 것이 확인되면 띄우셔야 합니다.

아랫처럼.

InputStream is = conn.getInputStream();
InputStreamReader isr = new InputStreamReader(is,"UTF-8");
BufferedReader br = new BufferedReader(isr);

String str = null;
StringBuffer buf = new StringBuffer();

do{
    str = br.readLine();
    if(str != null){
        buf.append(str);
    }

} while(str != null);

String data = buf.toString();

if (data.isEmpty()) {
     showEmptyResut(); 
     retuirn;
}

// 받은 데이터 처리

private void showEmptyResut() {
    runOnUiThread {. //백그라운드 쓰레드에서 Main 쓰레드로 전환.
       Toast noCoach = Toast.makeText(this,"검색결과가 없습니다.", Toast.LENGTH_LONG);
       noCoach.show();
    }
}

 

 

 

 

spark (227,470 포인트) 님이 2021년 11월 29일 답변
...