保持简洁,这对于使用按钮管理Android点击事件更好吗?
将其分配给XML Construct行中的ID?
android:id="@+id/ButtonEventName"
通过Java检测新闻事件并使用它? 取自基于android studio的登录活动模板:
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(){}
使用按钮事件时哪个更有效,更可靠?
答案 0 :(得分:1)
第1点 - 在代码中创建它允许您通过使方法私有来屏蔽方法访问,而以xml方式执行它会导致方法的暴露。
第2点 - android:onClick适用于API级别4以上,因此如果您的目标是< 1.6,那你就不能用了。
另外根据我的理解,这两个是相似的。
答案 1 :(得分:1)
这完全取决于您,但请记住,android:onClick="EventName"
如果您在xml中定义它将作为Fragment
的一部分而膨胀并且您尝试接收按钮时将不起作用按下Fragment
本身。 onClick
属性仅在Activities
中搜索您指定的方法名称。
我建议您查看ButterKnife
答案 2 :(得分:1)
这两种方法都有其优点和缺点。我不知道哪一个更有效。
使用id + onClickListener
是更复杂的代码,但它为您提供了对错误进行运行时检查的机会。在您的示例中,这将意味着额外的null
检查。
第二种方法更易于阅读,但如果您没有EventName
方法应用程序将崩溃
我更喜欢第二个,因为它更简单,并且更容易遵循逻辑并在更少的代码中发现错误。
我还必须补充说,虽然第一个解决方案确实提供了避免应用程序崩溃的方法,但最终并不重要,因为如果findViewById
返回null
你基本上有相同的错误,那么代码就是与布局xml
不匹配并添加null
检查(在最终工作应用中应该是多余的)只是另外污染了代码。