【问题标题】:Android buttons - difference in listenerAndroid按钮 - 侦听器的区别
【发布时间】:2020-08-26 10:22:45
【问题描述】:

我是 android 开发新手,我发现有 2 种不同的方法可以让按钮执行特定任务。

第一种方法是在 onCreate 函数中添加一个setOnClickListener()

第二种是在其Activity页面中创建一个单独的方法,并使用android:onClick="thisFunction"android:onClick="thisFunction"使用Activity的XML来调用它

我一直发现在 XML 中使用 android:onClick 调用函数更容易。

这种方式会使按钮的执行速度变慢吗? 专家们什么时候会更喜欢一种方式而不是另一种方式?

【问题讨论】:

    标签: android xml kotlin


    【解决方案1】:

    第一个

    来自 java 的 onclick 监听器

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            
        }
    });
    

    这是执行点击的官方方式

    第二次

    android:onClick="thisFunction"

    这用于缩短代码 你应该使用它作为一种方法

    private void myfunction(
    {
    //Button clicked
    }
    

    我已经为您创建了一个演示应用,请查看 :)

    package com.urname.appname;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends AppCompatActivity {
    Button mybuttonname;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_activity_main);
            mybuttonname=(Button)findViewById(R.id.button);
            mybuttonname.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //button clicked
                }
            });
            
        }
    private void myfunction(){
            //button clicked
    }
    }
    

    **

    *> 但我更喜欢第一个,因为有些代码不能在 a

    中运行

    方法*

    **

    【讨论】:

      【解决方案2】:

      在我看来,在代码中设置 onClick 总是更好,因为 xml 方式只适用于活动。当您尝试使用片段执行此操作时,它会要求您选择一个活动来处理来自 xml 的 onClick()。想象一下,有一个单一的活动应用程序,有很多片段,并且所有的 onClick() 方法都分布在 MainActivity 代码中。真是一团糟。

      关于setOnClickListener()onClick() inside xml 的性能,我认为现在几乎相同。

      【讨论】:

      • 我不建议使用 Butterknife。那是很久以前的一个工具,如果你访问他们的 Github,他们提到的第一件事就是该工具已被弃用......我宁愿建议使用 Kotlin 视图扩展和 Android 视图绑定 (developer.android.com/topic/libraries/view-binding)
      • 哇,你说得对。我将编辑我的答案。感谢@Hayuki 的提醒
      猜你喜欢
      • 2013-09-13
      • 1970-01-01
      • 2011-11-27
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 2015-07-31
      相关资源
      最近更新 更多