2012-03-11 6 views
0

J'ai un récepteur de diffusion privé à l'intérieur de ma classe de contrôleur. J'essaie d'avoir ma classe de contrôleur à l'écoute des messages de diffusion mais je continue à obtenir l'erreur suivanteRécepteur de diffusion privée ListView

java.lang.RuntimeException: Unable to instantiate receiver com.android.five.Controller: java.lang.ClassCastException: com.android.five.Controller 

Voici ma configuration.

private final BroadcastReceiver receiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d(TAG, "message recieved"); 
     Bundle bundle = intent.getExtras(); 
     if (bundle.getString("ARTIST") != null) { 

      String artist_name = bundle.getString("ARTIST"); 
      String track_name = bundle.getString("TRACK"); 
      Log.d(TAG, artist_name); 
      Log.d(TAG, track_name); 
     } 
    } 
}; 

Ceci est mon fichier manifeste.

<activity   
     android:name=".Controller" 
     android:label="@string/app_name" 
     android:noHistory="true" > 
     <intent-filter> 
      <action android:name="com.android.five.services.SONG_CHANGE" /> 
     </intent-filter> 
    </activity> 

    <receiver android:name="com.android.five.Controller" > 
     <intent-filter> 
      <action android:name="com.android.five.services.SONG_CHANGE" /> 
     </intent-filter> 
    </receiver> 
+0

Sûrement ''? Mais si son privé ne pense pas que le manifeste peut le voir, changez-le en public. – Blundell

+0

toujours rien. :( – James

+0

J'ai pu me débarrasser de l'erreur, mais ma classe de contrôleur ne peut pas écouter les messages de diffusion de mon service – James

Répondre

0

Si vous définissez un BroadcastReceiver dans le manifeste alors il doit y avoir une classe dans son propre droit. soit étendre BroadcastReceiver. Ou vous pouvez en enregistrer un avec registerReceiver.

+0

Je sais déjà comment procéder de cette façon. un récepteur intégré. – James

Questions connexes