2013-08-05 3 views
0

J'implémente un lecteur multimédia simple, mais je veux gérer mon lecteur en utilisant gestionnaire. Par exemple - mon OnClick:Android gérer le message du gestionnaire

public void playerControls(View v) { 
    switch (v.getId()) { 
     case R.id.Play: 
      if (!PlayerService.isPlay()) { 
       Log.i(TAG, DeviceHelper.getMethodName() + " Media start play"); 
       play.setImageResource(R.drawable.pause); 
       service.play(); 
       trackTitle.setText(service.getTrackTitle()); 
      } else { 
       Log.i(TAG, DeviceHelper.getMethodName() + " Media pause"); 
       play.setImageResource(R.drawable.play); 
       service.pause(); 
       trackTitle.setText("Paused..."); 
      } 
      break; 
     case R.id.NextTrack: 
      Log.i(TAG, DeviceHelper.getMethodName() + " Next track please"); 
      if (PlayerService.isPlay()) { 
       service.nextTrack(); 
       trackTitle.setText(service.getTrackTitle()); 
      } 
      break; 
     case R.id.PreviousTrack: 
      Log.i(TAG, DeviceHelper.getMethodName() + " Previous track please"); 
      if (PlayerService.isPlay()) { 
       service.previousTrack(); 
       trackTitle.setText(service.getTrackTitle()); 
      } 
      break; 
    } 
} 

Et je veux envoyer un message par gestionnaire, quelque chose comme ceci:

case R.id.NextTrack: 
     Log.i(TAG, DeviceHelper.getMethodName() + " Next track please"); 
     if (PlayerService.isPlay()) { 
     Message m = new Message;  
     m.what = MyConstant; 
     handler.sendMessage(m); 
     trackTitle.setText(service.getTrackTitle()); 
     } 
     break; 

Et gérer ce message dans une autre classe, où je mets en œuvre ma logique. Mais dans cette implémentation je n'ai pas vu mon message.

Pourriez-vous s'il vous plaît fournir de l'aide? Thx

Répondre

0

Je voudrais utiliser un Messenger pour envoyer le message et créer une interface publique pour gérer le rappel.

public interface MyCallbacks { 
    public void handleMessage(Message m); 
} 

Alors le messager déclare:

final Messenger mMess = new Messenger(new MyHandler)); 

class MyHandler extends Handler { 
    @Override 
    public void handleMessage(Message msg) { 
     switch(msg.what) { 
      case i: 
      if (mCallback != null) 
       mCallback.handleMessage(msg); 
     } 
    } 
} 

Ensuite, chaque fois que vous voulez gérer ce que vous feriez:

public class handlingClient implements MyCallbacks { 
    @Override 
    public void handleMessage(Message msg) { 
     //handles the msg here 
    } 
} 
Questions connexes