我来自 iOS 世界,刚开始接触 Android。我参加了 Java 培训,所以我知道如何创建方法,但我没有得到操作。
我想做的是从一个按钮创建一个方法操作,但我在任何地方都找不到如何做到这一点(显然找错了地方)。当我点击按钮 1 时,我想创建一个内部只有 a=1 的方法,当我点击按钮 2 时,我想要 a=2(然后我可以决定当 a 为 1 或 2 时要做什么)。
我在 Acitivity_main.xml 中创建了我的按钮,并在 OnClick 中提供了一个方法名称,但我仅此而已。
当我与 iOS 进行比较时,它似乎是如此基础,以至于我不明白为什么我找不到如何去做。
好心的人能为我指明创建 Action 的正确方向吗?
最佳答案
你有三个选择:
common in 1,2) 您需要为布局 XML 文件中的每个按钮分配一个 id
<Button android:id="@+id/my_button1"
..........
/>
<Button android:id="@+id/my_button2"
..........
/>
1) 在 setContentView()
之后的 Activity 的 onCreate()
方法中,您需要设置一个新的 OnClickListener
每个按钮。
public class MyActivity extends Activity {
int a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button myButton1 = (Button) findViewById(R.id.my_button1);
Button myButton2 = (Button) findViewById(R.id.my_button2);
myButton1.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// Do what you want here
a = 1;
}
});
myButton2.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// Do what you want here
a = 2;
}
});
}
2) 正如您在第一种方法中看到的,我们需要从 OnClickListener
为每个按钮创建一个新对象。出于性能和可读性原因,我们可以将所有这些混合到一个OnClickListener
中。
public class MyActivity extends Activity implements View.OnClickListener {
int a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button myButton1 = (Button) findViewById(R.id.my_button1);
myButton1.setOnClickListener(this);
Button myButton2 = (Button) findViewById(R.id.my_button2);
myButton2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.my_button_1:
a = 1;
break;
case R.id.my_button_2:
a = 2;
break;
}
}
...
}
3) 您不需要为此选项分配一个 id,您只需要在 XML 中分配方法名称,然后在 Activity 中使用完全相同的名称实现相同的方法,但是它必须将 View 对象作为参数。
<Button
...
android:onClick="button1Click" />
<Button
...
android:onClick="button2Click" />
然后在您的 Activity 中编写方法。
public class MyActivity extends Activity implements View.OnClickListener {
int a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void button1Click(View v) {
a = 1;
}
public void button2Click(View v) {
a = 2;
}
}
这就是您的所有选择。我个人更喜欢数字 2。
关于android - 单击监听器上的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30323734/