【问题标题】:Android Button OnClick event fired after multiple clicks多次点击后触发 Android Button OnClick 事件
【发布时间】: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 中,第一次单击使按钮成为焦点,而第二次单击实际上是按下按钮。但是,我在按钮定义中将 focusableInTouchModefocusable 都设置为 false。

在这种情况下是否需要定义一些其他属性以允许OnClickListener 事件触发?

编辑: 经过一番调查后,我发现子 Activity B 被启动了两次(或更多),并且每次单击按钮确实按预期工作,但似乎没有发生任何事情。完整答案如下。

【问题讨论】:

    标签: android button onclick


    【解决方案1】:

    启动子 Activity 的代码响应 onTouch 事件,该事件为 ACTION_UPACTION_DOWN 触发。这会导致 Activity 启动多个实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-01
      • 2012-01-03
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      • 2013-03-12
      • 2013-07-01
      • 1970-01-01
      相关资源
      最近更新 更多