美文网首页IT@程序员猿媛Java架构技术进阶
Android APP里的onclick事件如何写?

Android APP里的onclick事件如何写?

作者: 程就人生 | 来源:发表于2019-07-15 23:26 被阅读0次
    第一种,比较原始的
    1)先在Activity里面添加onclick事件,activity通过onCreate方法指定到具体的页面
       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           //渲染到具体的页面,ctrl +  鼠标右键直达页面
           setContentView(R.layout.activity_main);
       }
       
      public void addOnClick(View view){
          Toast.makeText(this, "add", Toast.LENGTH_SHORT).show();
      }
    
    2)然后在xml的button上增加click事件,头部的 tools:context=".MainActivity"

    指向具体的activity, ctrl + 鼠标右键直达到类;

       <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button"
            android:onClick="addOnClick"   //增加onclick事件,将它与方法绑定
            tools:layout_editor_absoluteX="92dp"
            tools:layout_editor_absoluteY="423dp" />
    
    第二种,使用插件butterknife里面的注解
    1)首先在项目的gradle里面增加配置
            classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-rc2'
    
    图-1
    ###### 2) 然后在使用app的gradle里面,头部增加配置:
    
           apply plugin: 'com.jakewharton:butterknife'
    
    图-2
        dependencies依赖里增加:
    
                    api 'com.jakewharton:butterknife:9.0.0-rc1'
            annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-rc1'
    
    图-3
    ###### 3)点击文件的头部黄色的Sync Now,进行架包下载
    
    图-4
    图-5,同步失败了,点击该按钮再次同步
    再不行,进行设置自动更新
       ###### 4)接下来,就可以在activity里面使用@OnClick注解,xml文件的控件上无需增加onclick事件,事件直接在activity里面绑定。
    
    /**
         * OnClick的使用,id必须在对应的xml文件里存在
         */
        @OnClick(R.id.button)public void click(){
            Toast.makeText(this, "aaaaaaaa", Toast.LENGTH_SHORT);
        }
    
    第三种,还是原始的写法,只是多个按钮使用同一个事件,该如何写呢?
    /**
     * 实现了View.OnClickListener接口,通过setOnClickListener对页面上的按钮根据id进行绑定,不需要为按钮写click,只需要设置id
     */
    public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //每个按钮绑定一个事件,this也可以单独为一个类,如果是单独一个类时,该类需要实现View.OnClickListener接口,此处直接new 该类即可
            findViewById(R.id.update).setOnClickListener(this);
            findViewById(R.id.quit).setOnClickListener(this);
            
        }
    
        @Override
        public void onClick(View v) {
            Toast.makeText(this, v.getId() + "", Toast.LENGTH_SHORT);
            // 接收用户输入
            switch (v.getId()) {
                case R.id.update:
                    Toast.makeText(this, "aaaaaaaa", Toast.LENGTH_SHORT).show();
    
                    break;
                case R.id.quit:
                    Toast.makeText(this, "bbbbb", Toast.LENGTH_SHORT).show();
    
                    break;
            }
        }
    }
    
    第四种写法,匿名内部类的方式,xml中的控件上无需写onclick事件;
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            /**
             * 匿名内部类方式,进行onclick事件
             */
            Button updateButton =  (Button)findViewById(R.id.update);
            updateButton.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                   //实现方法可以提取出去
                    Log.i("aaaa","bbbbb");
                }
            });
        }
    

    **总结:
    今天把android app中onclick的几种写法,扒拉了一下,类似于茴香豆的茴字有几种写法,主要是为了适用场景,在不同的业务场景下使用不同的写法。
    目前,最流行的应该是使用butterknife插件中的@OnClick注解,主要原因是写法简洁,但在使用前,需要对butterknife插件进行配置,配置失败时,需要配置多次,直至配置成功。butterknife插件中不仅仅是对@OnClick的使用,还有其他更便捷的使用,这个后面会慢慢深入。
    掌握了这几种写法,作为一个小白,再看别人代码时,就可以不用那么头大了。个人比较喜欢内部类的写法,内部类的写法,经常在JavaScript中这样写,Java中偶尔也这样写,节省空间,节约代码。
    对于一个小白,更习惯于第一种写法。当然每种写法都认识才行,认识了再尝试一下。不然,怎么阅读其他同事写的代码呢。
    **

    相关文章

      网友评论

        本文标题:Android APP里的onclick事件如何写?

        本文链接:https://www.haomeiwen.com/subject/gdeykctx.html