Android 安卓工作室-可以有一个功能“;“知道”;按下哪个按钮激活了它?

Android 安卓工作室-可以有一个功能“;“知道”;按下哪个按钮激活了它?,android,function,android-studio,android-intent,android-button,Android,Function,Android Studio,Android Intent,Android Button,图像我有两个按钮,A和B。我有一个函数,叫做神秘()。按下按钮A和B时,都会激活神秘号(),但如果按下按钮A,神秘号()不知何故知道是按钮A激活了它,如果按下按钮B,神秘号()不知何故知道是按钮B激活了它。如果是按钮A激活了神秘(),神秘()将停止应用程序,但如果是按钮B激活了神秘(),神秘将给玩家100美元 这只是一个随机的例子,但基本上我要问的是:有没有办法传递哪个按钮触发了一个函数?我知道我可以有两个函数,mysteryA和mysteryB,前者链接到A,后者链接到B,只需复制和粘贴,每个

图像我有两个按钮,A和B。我有一个函数,叫做神秘()。按下按钮A和B时,都会激活神秘号(),但如果按下按钮A,神秘号()不知何故知道是按钮A激活了它,如果按下按钮B,神秘号()不知何故知道是按钮B激活了它。如果是按钮A激活了神秘(),神秘()将停止应用程序,但如果是按钮B激活了神秘(),神秘将给玩家100美元

这只是一个随机的例子,但基本上我要问的是:有没有办法传递哪个按钮触发了一个函数?我知道我可以有两个函数,mysteryA和mysteryB,前者链接到A,后者链接到B,只需复制和粘贴,每个函数都有细微的变化,但必须有更有效的方法来实现这一点

有什么想法吗?

是的,这是可能的(这里是一个java示例)

以及您的xml:

<Button
        android:text="Button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button2"
        android:onClick="myMethod"/>
<Button
        android:text="Button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button3"
        android:onClick="myMethod"/>

现在,在onClickListener中,
myMethod
您可以访问一个
视图
,通过该视图,您可以确定哪个按钮称之为
  • 功能能否“知道”按下哪个按钮激活它

  • 有没有办法传递触发功能的按钮

    是。有很多方法可以知道该功能是否由特定按钮触发

方法1:您可以使用模式将变量传递给函数,例如

按钮A通过
神秘(“A”)向其传递变量来触发
神秘()

按钮B通过
神秘(“B”)
向其传递变量来触发
神秘()

在函数内部

神秘:

private void mystery(String mode) {
System.out.println(mode); // Here mode contains A or B
}
方法2:现在您可以再次使用布尔类型的全局变量

private boolean按钮

现在,在按钮A的单击侦听器中,您可以设置
isButtonA=true
在按钮B的点击监听器中,您可以设置
isButtonA=false


这些只是几个简单的问题。如果我错过了一些更容易的,请随意提出一些建议;)

向按钮或某个已知字符串/int添加标记并将其传递到函数中?神秘(whichButton:String)您可以使用布尔值进行检查flag@Smashing另一位SA dev:DHmm好吧,我有点明白你在说什么。那么如何访问视图呢?比如(如果视图=某物)?或者我如何使用视图来确定哪个按钮称之为itUpdated,我想这就是我要问的。在我的更新中,我添加了一条注释,其中一种方法是使用
view.getId
,这样你就可以用一个更好的例子来检查哪个视图的ID称之为itUpdated,很乐意帮助@Evan:)这是一个不错的答案,如果安卓系统还没有对它的支持,这可能就是解决问题的方法,但这是一个很好的答案:D
private void mystery(String mode) {
System.out.println(mode); // Here mode contains A or B
}