【发布时间】:2010-06-30 23:44:41
【问题描述】:
我有一个自定义的 Android (1.5) 标题栏,其中包含一个按钮。使用活动 A 中的自定义标题栏,我可以单击按钮,并按预期触发 OnClickListener 事件。
但是,当我从 Activity A 启动 Activity B 以获得结果时,可能需要单击 2-3 次才能触发相同的按钮事件。
这是在onCreate覆盖中为Activity A设置事件监听器的代码
setTitleNegativeActionListener(new OnClickListener() {
public void onClick(View v) {
// end this activity
ActivityA.this.finish();
}
});
这是活动 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" />
似乎在活动 B 中,第一次单击使按钮成为焦点,而第二次单击实际上是按下按钮。但是,我在按钮定义中将 focusableInTouchMode 和 focusable 都设置为 false。
在这种情况下是否需要定义一些其他属性以允许OnClickListener 事件触发?
编辑: 经过一番调查后,我发现子 Activity B 被启动了两次(或更多),并且每次单击按钮确实按预期工作,但似乎没有发生任何事情。完整答案如下。
【问题讨论】: