使用 onclick 或 ID 执行方法?

Execute method using onclick or ID?

保持简短,这更利于在使用按钮时管理 android 单击事件?

将其分配给 XML 构造行中的 ID?

android:id="@+id/ButtonEventName"

并通过 Java 检测按下事件来使用它? 取自 android 工作室的登录 activity 模板:

Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button);
mEmailSignInButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
        attemptLogin();
    }
});

或将按钮分配给 onclick 方法:

android:onClick="EventName"

整合 Java 方:

public void EventName(){}

在处理按钮事件时,哪个更有效、更可靠,值得推荐?

点 1 - 在代码中创建它允许您通过将方法设为私有来屏蔽方法访问,而以 xml 方式进行会导致方法暴露。

点 2 - android:onClick 适用于 API 4 级以上,所以如果你的目标是 < 1.6,那么你不能使用它.

否则据我了解,这2个是相似的。

这完全取决于您,但请记住,如果您在将作为 Fragment 的一部分膨胀的 xml 中定义 android:onClick="EventName" 并且您尝试在 Fragment 本身上接收按钮按下。 onClick 属性 仅搜索 Activities 您指定的方法名称。

我建议您查看 ButterKnife

这两种方法各有利弊。不知道哪个更有效

  1. 使用 id + onClickListener 是更复杂的代码,但它让您有机会进行 运行-时间检查错误。在您的示例中,这意味着额外的 null 检查。

  2. 第二种方法更容易阅读,但是如果你没有EventName方法应用程序会崩溃

我更喜欢第二个,因为它更简单,而且总是更容易遵循逻辑并用更少的代码发现错误。

我还必须补充一点,虽然第一个解决方案确实提供了避免应用程序崩溃的方法,但最后这并不重要,因为如果 findViewById returns null 你基本上有相同的错误,与布局不匹配的代码 xml 并添加 null 检查(在最终工作的应用程序中应该是多余的)只会另外污染代码。