2011-05-14 4 views
0

나는이 다음 활동 클래스 :안드로이드 : 나는 활동의 내부 클래스로 방송 수신기를 만들려면 어떻게해야합니까

public class Main extends TabActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    public class LocationUpdateReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "broadcast received", Toast.LENGTH_LONG).show(); 
     Log.e("ADNAN", "received"); 
    } 

    } 

} 

내 매니페스트 파일의 항목을 다음

<receiver android:name=".LocationUpdateReceiver" android:enabled="true"/> 

내가 사용 내 수업에 브로드 캐스트를 보내려면 다음 코드를 입력하십시오.

Intent intent = new Intent(this,LocationUpdateReceiver.class); 
     sendBroadcast(intent); 

수신자는 브로드 캐스트를 수신하지 않습니다. 그러나 내 수신자 클래스를 LocationUpdateReceiver.java 파일로 가져 가면 예상대로 작동합니다. 여기서 내가 뭘 잘못하고 있니? 내 매니 페스트 파일에서 다른 방식으로 수신기를 지정해야합니까? 내부 클래스로 브로드 캐스트 리시버를 만드는 방법은 무엇입니까?

답변

1

Activity의 멤버로 사용하려면 this과 같은 액티비티의 콜백 (예 : onCreate())에 등록해야합니다.

+0

나는 이것을하고 싶지 않았지만 나는 다른 방법으로는 불가능하다고 생각한다. – binW

+1

someones API를 사용하는 경우 원하는 것을하는 것이 아닙니다. 행운을 빕니다 ;) –

0

안드로이드는 매니페스트 파일에서 ".LocationUpdateReceiver"를 찾지 못합니다 (제대로 작동하지 않는다면 Android를 만들지 않는 한).

작동하는지 모르지만 매니페스트 파일 대신 ".TabActivity $ LocationUpdateReceiver"를 사용해보십시오. 내부 클래스의 파일 이름은이 방법으로 참조됩니다.

관련 문제