如何处理在Android中点击的按钮?

Wil*_*lka 6 android

在Android中,似乎有3种处理按钮点击的常用方法,这些方法之间有多大差异?他们中的任何一个在某种程度上"更好"吗?

我一直看到的三种方法是:

匿名课

通过它的ID找到按钮,然后将新的匿名类传递给setOnClickListener,例如在onCreate

findViewById(R.id.myButton).setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        // .. Whatever
    }
});
Run Code Online (Sandbox Code Playgroud)

实现OnClickListener

实现OnClickListener并传递thissetOnClickListener,然后使用基于按钮ID的开关状态,例如在onCreate

findViewById(R.id.myButton).setOnClickListener(this);
Run Code Online (Sandbox Code Playgroud)

和实现onClick一样

public void onClick(View v) {
    switch(v.getId()) {
        case R.id.myButton:
            // ... whatever ...
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用onClick XML属性

在您的活动的XML布局中,不要为您的按钮指定ID,请使用onClick如下所示:

<Button 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:onClick="buttonClicked" 
    android:text="Button" />
Run Code Online (Sandbox Code Playgroud)

然后buttonClicked在您的Acitiviy中有一个方法,如下所示:

public void buttonClicked(View v) {
    // ... whatever ...
}
Run Code Online (Sandbox Code Playgroud)

目前我倾向于使用XML属性,但这只是因为它涉及的代码量最少.我什么时候应该使用其他方法?

mib*_*lma 4

前两种是经典方法。您更喜欢哪一个更像是一般的 Java 问题而不是 Android 问题。后来添加了第三个以使事情变得更容易。

在按钮上设置点击侦听器是非常常见的任务,但它需要大量的样板代码。减少样板文件数量的一种方法是在多个按钮之间共享单击侦听器。虽然这种技术减少了类的数量,但它仍然需要大量的代码,并且仍然需要在 XML 布局文件中为每个按钮提供一个 id。对于 Android 1.6,这些都不是必需的。您所要做的就是在 Activity 中声明一个公共方法来处理点击(该方法必须有一个 View 参数)

来源