Ich habe eine benutzerdefinierte Android (1.5) Titelleiste, die eine Schaltfläche enthält. Wenn ich die benutzerdefinierte Titelleiste in Aktivität A verwende, kann ich auf die Schaltfläche klicken, und die OnClickListener
Ereignis wie erwartet auslösen.
Wenn ich jedoch Aktivität B für das Ergebnis von Aktivität A aus starte, kann es 2-3 Klicks dauern, bis das gleiche Schaltflächenereignis ausgelöst wird.
Dies ist der Code zum Einstellen des Ereignis-Listeners für Aktivität A in der onCreate
Überschreiben Sie
setTitleNegativeActionListener(new OnClickListener() {
public void onClick(View v) {
// end this activity
ActivityA.this.finish();
}
});
Dies ist der Code für Aktivität B
setTitleNegativeActionListener(new OnClickListener() {
public void onClick(View v) {
setResult(RESULT_CANCELED);
EditClientAddressActivity.this.finish();
}
});
Schaltfläche XML aus Layout
<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" />
Es scheint, als ob in Aktivität B der erste Klick die Schaltfläche in den Fokus setzt und der zweite Klick die Schaltfläche tatsächlich drückt. Ich habe jedoch beide focusableInTouchMode
y focusable
in der Definition der Schaltflächen auf false gesetzt.
Gibt es eine andere Eigenschaft, die definiert werden muss, damit die OnClickListener
Ereignis, das in diesem Fall ausgelöst wird?
EDIT : Nach einer weiteren Untersuchung stellte ich fest, dass die untergeordnete Aktivität B zweimal (oder öfter) gestartet wurde und jeder Klick auf die Schaltfläche tatsächlich wie erwartet funktionierte, aber es schien, als ob nichts passierte. Die vollständige Antwort finden Sie unten.