2010-06-30 7 views
2

J'ai une barre de titre Android (1.5) personnalisée qui comprend un bouton. En utilisant la barre de titre personnalisée de l'activité A, je suis capable de cliquer sur le bouton et de déclencher l'événement OnClickListener comme prévu. Cependant, lorsque je lance l'activité B pour le résultat, à partir de l'activité A, il peut s'écouler 2 à 3 clics pour que le même événement de bouton se déclenche.Android Button OnClick événement déclenché après plusieurs clics

C'est le code pour définir l'écouteur d'événement pour l'activité A dans la onCreate override

setTitleNegativeActionListener(new OnClickListener() { 

public void onClick(View v) { 
    // end this activity 
    ActivityA.this.finish(); 
    } 
}); 

Voici le code pour l'activité B

setTitleNegativeActionListener(new OnClickListener() { 

    public void onClick(View v) { 
    setResult(RESULT_CANCELED); 
    EditClientAddressActivity.this.finish(); 
    } 
}); 

XML Bouton de mise en page

<Button 
    android:id="@+id/title_button_right" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:background="@drawable/nav_button" 
    android:text="Done" android:textColor="#fff" 
    android:layout_alignParentRight="true" android:textSize="12dip" 
    android:textStyle="bold" android:paddingLeft="10dip" 
    android:paddingRight="10dip" android:layout_centerVertical="true" 
    android:minWidth="40dip" 
    android:focusableInTouchMode="false" android:focusable="false" /> 

Il semble que dans l'activité B, le premier clic est de mettre le bouton i nt se concentrer, et le deuxième clic est en fait appuyer sur le bouton. Cependant, j'ai défini les deux focusableInTouchMode et focusable comme faux dans la définition des boutons.

Y a-t-il une autre propriété à définir pour permettre à l'événement OnClickListener de se déclencher dans ce cas?

EDIT: Après un peu plus enquête, je trouve que l'enfant l'activité B avait démarré deux fois (ou plus) et chaque clic du bouton fonctionnait bien comme prévu, mais avait l'impression que rien ne se passait. Réponse complète ci-dessous.

Répondre

1

Le code du lancement de l'activité enfant répond à un événement onTouch, qui a été déclenché pour ACTION_UP et ACTION_DOWN. Cela provoquerait le démarrage de plusieurs instances par l'activité.

Questions connexes