2010-04-20 3 views
2

J'ai un ViewFlipper pour lequel je veux qu'un auditeur se déclenche lorsque l'enfant affiché est changé. J'ai placé un OnFocusChangeListener au ViewFlipper mais il ne se déclenche jamais quand je passe de l'enfant 0 à l'enfant 1 ou vice-versa. ViewFlipper contient deux RelativeLayouts et j'ai essayé de définir OnFocusChangeListeners pour ceux-ci mais j'ai une exception ClassCastException quand j'essaie de le définir. Voici mon code:android: Comment définir un écouteur qui se déclenche lorsque mon ViewFlipper montre un nouvel enfant

RelativeLayout songsLayout = (RelativeLayout) findViewById(R.id.song_page_layout); 
songsLayout.setOnFocusChangeListener(new OnFocusChangeListener() { 
    public void onFocusChange(View view, boolean hasFocus) { 
     showPopUp("View " + view.getId() + " now has focus: " + hasFocus); 
    }  
}); 

R.is.song_page_layout est l'un de mes RelativeLayouts et showPopup() est une fonction que j'utilise pour montrer, eh bien, popups.

Quelqu'un a-t-il du code de fonctionnement pour une sorte de déclencheur qui se déclenche lorsqu'un ViewFlipper change quel enfant est affiché?

Répondre

3

Je pense que vous ne comprenez pas ce que «focus» signifie sur Android; C'est quand un utilisateur sélectionne cette vue, par exemple quand il sélectionne un EditText en appuyant dessus, ou il utilise le clavier pour sélectionner un bouton. Quand un ViewFlipper change de vue, il ne gagne ou ne perd pas le focus.

Pour autant que je sache, vous pouvez:

quand vous le voulez à retourner (puis définir l'intervalle vous dans le code)
  1. Ne pas utiliser flipping automatique de ViewFlipper, au lieu d'appeler manuellement shownext() .

  2. Sous-classe ou réimplément ViewFlipper et ajouter un écouteur de modification à votre goût.

Questions connexes