2012-02-12 3 views
1

MediaPlayer.OnPreparedListener를 구현하는 서비스가 있습니다.Android : MediaPlayer.setOnPreparedListener()

지금까지는 함수 내부에서 player.setOnPreparedListener (this)를 호출했으며 제대로 작동했습니다. 지금은 (핸들러를 사용하여)의 Runnable에서 setOnPreparedListener를 호출 할, 그러나 나는 오류를 얻을

유형 MediaPlayer를의 방법 setOnPreparedListener (MediaPlayer.OnPreparedListener)가 인수 적용되지 않습니다

(새의 Runnable() {})

따라서 대신이 대신 현재 클래스를 가리키는 것을 사용해야합니다. 문제는 무엇입니까?

답변

3

사용하여 처리기에서

player.setOnPreparedListener(MyService.this); 

this 분명 처리기를 말합니다. MyService.this을 사용하면 을 Activity으로 참조하여 this 키워드의 범위를 더 높게 설정해야합니다.

+0

청취자를 구현하는 서비스이므로 "MyService.this"라고해야합니다. 예, +1. –

+0

아, 그래. 그것을 간과했다. 큰 변화는 없다 :) – nhaarman

+0

고마워, 나는 어리 석다. –

8

나는 player.setOnPreparedListener(this)을 호출 할 때 귀하의 활동이 MediaPlayer.OnPreparedListener으로 구현되었다고 가정합니다. 그리고 Runnable은 (물론) 아닙니다. 이 두 가지 옵션이 있습니다 :이 실행 가능한이 활동 내에서 구현 된 경우

  1. 은, 사용하는 완전한 this : YourActivity.this
  2. 하지 않으면, 당신은 전화의 단지 지점이 리스너를 구현할 수 있습니다

    player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
        @Override 
        public void onPrepared(MediaPlayer mp) { 
        // do stuff here 
        } 
    }