我有一个自定义的 Android (1.5) 标题栏,其中包含一个按钮。使用 Activity A 中的自定义标题栏,我可以单击按钮,并按预期触发 OnClickListener
事件。
但是,当我从 Activity A 启动 Activity B 以获得结果时,可能需要点击 2-3 次才能触发相同的按钮事件。
这是在 onCreate
override 中为 Activity A 设置事件监听器的代码
setTitleNegativeActionListener(new OnClickListener() {
public void onClick(View v) {
// end this activity
ActivityA.this.finish();
}
});
这是 Activity B的代码
setTitleNegativeActionListener(new OnClickListener() {
public void onClick(View v) {
setResult(RESULT_CANCELED);
EditClientAddressActivity.this.finish();
}
});
来自布局的按钮 XML
<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" />
好像在 Activity B 中,第一次点击是使按钮成为焦点,第二次点击实际上是按下按钮。但是,我在按钮定义中将 focusableInTouchMode
和 focusable
都设置为 false。
在这种情况下是否需要定义一些其他属性以允许 OnClickListener
事件触发?
编辑: 经过更多调查后,我发现子 Activity B 被启动了两次(或更多次),每次单击按钮确实按预期工作,但看起来好像什么也没发生。完整答案如下。
最佳答案
启动子 Activity 的代码响应 onTouch
事件,该事件是为 ACTION_UP
和 ACTION_DOWN
触发的。这会导致 Activity 启动多个实例。
关于多次点击后触发的 Android Button OnClick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3154231/