【问题标题】:Two ways of assigning a button's onclick method [duplicate]分配按钮的onclick方法的两种方法[重复]
【发布时间】:2013-05-15 06:32:43
【问题描述】:

这些天我正在观看/阅读一些关于 Android 应用程序开发的教程。而且我已经学会了两种不同的方法来分配按钮的 onclick 方法。一种是用 XML 声明:

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" />

另一种是通过查找按钮的id:

Button myBtn = (Button) findViewById(R.id.button1);
myBtn.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        //do something...           
    }
});

我的问题是:每种方法有什么区别(优点和缺点),如果效率不同,一种方法比另一种方法快,所以通常首选?

【问题讨论】:

  • 还有一个,实现接口
  • Here你有答案。
  • @mmBs 哦,谢谢,所以它们几乎完全相同。
  • @Arch1tect 您在使用其中一个时面临什么性能问题。有三种方法可以应用 onClickListener。这不是一个长期运行的过程,因此我认为您面临与性能相关的任何问题。您能否提供任何证据证明它们的性能差异。
  • @Er.NikhilAgrawal 他从来没有说过他有性能问题,他问是否有性能差异。

标签: java android onclicklistener


【解决方案1】:

效率差异并不重要,因为它是如此之小,但我的猜测是 XML 方法稍微快一些,因为它避免了创建对象。

但是,这假设通过 XML 完成的任何链接的开销都小于对象创建开销。

我的建议:在执行很少的情况下,不要担心效率上的小小优势。

【讨论】:

    【解决方案2】:

    通常将按钮放在布局中,然后在活动类中编写方法会更容易。您还可以使用button.setOnTouchListener 并检测按钮是否已按下或未按下(以实现在按下时更改按钮背景的声音)。

    至于您描述的第一种方法,我只在有一个列表视图并且列表中的每个项目由一个文本视图和一个按钮组成时才使用它。所以我需要这些按钮中的每一个来调用一个方法。 我希望这能回答你的问题。

    【讨论】:

    • 问题不在setOnTouchListener的上下文中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    相关资源
    最近更新 更多