Android Studio - 一个函数 "know" 按下哪个按钮可以激活它?
Android Studio - Can a function "know" which button press activated it?
Image 我有 2 个按钮,A 和 B。我有一个函数,叫做 mystery()。按下按钮 A 和 B 时,都会激活 mystery(),但是如果按下按钮 A,mystery() 不知何故知道是按钮 A 激活了它,如果按下了按钮 B,mystery() 不知何故知道它是按钮B 激活它。如果是按钮 A 激活了 mystery(),mystery() 将停止应用程序,但如果是按钮 B 激活了 mystery(),mystery 将给玩家 100 美元。
那只是一个随机的例子,但基本上我要问的是:有没有办法将触发的按钮传递给函数?我知道我可以有两个函数,mysteryA 和 mysteryB,其中前者链接到 A,后者链接到 B,只需复制和粘贴,每个函数都略有不同,但是 must 是一种更有效的方法。
有什么想法吗?
是的,这是可能的(这里有一个 java 示例)
public class abc extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.example);
}
public void myMethod(View view) {
//here, you can use something like view.getId() or anything else to identify which view called this method
//you could do something like this :
if (view.getId() == R.id.button2) {
giveALocalNobody100Dollars();
}else if (view.getId() == R.id.button3){
giveItToHimEitherWayHeDeservesIt();
}
}
}
和你的 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
您可以访问一个 view
,并且通过此视图,您可以确定哪个按钮调用了它
函数可以“知道”按下哪个按钮激活它吗?
是
有没有办法传递哪个按钮触发了一个函数?
是的。 有很多方法可以知道该功能是否由特定按钮触发。
方法一: 你可以传递一个变量给函数,例如,
按钮 A 通过 mystery("A");
向其传递一个变量来触发 mystery()
按钮 B 通过 mystery("B")
;
向其传递变量来触发 mystery()
函数内部,
谜底:
private void mystery(String mode) {
System.out.println(mode); // Here mode contains A or B
}
方法二:现在你可以再次使用布尔类型的全局变量。
private boolean isButtonA;
现在您可以在按钮 A 的点击监听器中设置 isButtonA = true;
,在按钮 B 的点击监听器中您可以设置 isButtonA = false;
这些只是少数简单的。如果我遗漏了一些更简单的东西,请随意提出一些建议 ;)
Image 我有 2 个按钮,A 和 B。我有一个函数,叫做 mystery()。按下按钮 A 和 B 时,都会激活 mystery(),但是如果按下按钮 A,mystery() 不知何故知道是按钮 A 激活了它,如果按下了按钮 B,mystery() 不知何故知道它是按钮B 激活它。如果是按钮 A 激活了 mystery(),mystery() 将停止应用程序,但如果是按钮 B 激活了 mystery(),mystery 将给玩家 100 美元。
那只是一个随机的例子,但基本上我要问的是:有没有办法将触发的按钮传递给函数?我知道我可以有两个函数,mysteryA 和 mysteryB,其中前者链接到 A,后者链接到 B,只需复制和粘贴,每个函数都略有不同,但是 must 是一种更有效的方法。
有什么想法吗?
是的,这是可能的(这里有一个 java 示例)
public class abc extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.example);
}
public void myMethod(View view) {
//here, you can use something like view.getId() or anything else to identify which view called this method
//you could do something like this :
if (view.getId() == R.id.button2) {
giveALocalNobody100Dollars();
}else if (view.getId() == R.id.button3){
giveItToHimEitherWayHeDeservesIt();
}
}
}
和你的 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
您可以访问一个 view
,并且通过此视图,您可以确定哪个按钮调用了它
函数可以“知道”按下哪个按钮激活它吗?
是
有没有办法传递哪个按钮触发了一个函数?
是的。 有很多方法可以知道该功能是否由特定按钮触发。
方法一: 你可以传递一个变量给函数,例如,
按钮 A 通过 mystery("A");
mystery()
按钮 B 通过 mystery("B")
;
mystery()
函数内部,
谜底:
private void mystery(String mode) {
System.out.println(mode); // Here mode contains A or B
}
方法二:现在你可以再次使用布尔类型的全局变量。
private boolean isButtonA;
现在您可以在按钮 A 的点击监听器中设置 isButtonA = true;
,在按钮 B 的点击监听器中您可以设置 isButtonA = false;
这些只是少数简单的。如果我遗漏了一些更简单的东西,请随意提出一些建议 ;)