android - 单击监听器上的按钮

标签 android button methods action

我来自 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/

相关文章:

Android 铃声首选项 - 获取数据

android - 单选ListView自定义Row Layout

react-native - 在 React Native 中向 onPress 函数添加多个事件

android - AppCompatActivity 按钮文本的字体样式已更改

javascript - 每当文本字段动态为空时禁用按钮

javascript - 嵌套函数作为javascript中的方法

java - 返回链表中的 (2n/3) 个元素,同时在链表上循环一次

android - 使用 Titanium Developer 应用程序发送电子邮件

java - 安装了Android Studio 0.8.1,但由于没有Android SDK而无法进入IDE

JAVA猜数游戏使用方法: method for play again does not work properly