Button Click 5种响应方法

在设置Button按钮的点击事件onClick时,发现有多种方法使用,网上查看了一些博主写的帖子,发现不是非常完整,这里补充说明一下。

方法一:Button对象调用setOnClickListener,setOnClickListener中new OnClickListener接口作为参数传入,OnClickListener中重写onClick方法

    该方法适合单个或少量控件设置点击事件,使用比较灵活。
    示例代码:
public class ButtonClickActivity extends AppCompatActivity {

    private Button btn_click;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button_click);
        btn_click = findViewById(R.id.btn_click);
        btn_click.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //do something after click
                Toast.makeText(getApplicationContext(),"我被点击了",Toast.LENGTH_SHORT).show();
            }
        });

    }
}

方法二:自定义内部类实现OnClickListener接口,并重写onClick方法,通过setOnClickListener实现

    该方法同样适合单个或少量控件设置点击事件,自定义类也可以用于实现其他方法。
    示例代码:
public class ButtonClickActivity extends AppCompatActivity{

    private Button btn_click;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button_click);

        btn_click = findViewById(R.id.btn_click);
        btn_click.setOnClickListener(new MyOnClickListener());
    }

    private class MyOnClickListener implements View.OnClickListener{
        @Override
        public void onClick(View view) {
            //do something after click
        }
    }
}

方法三、自定义OnClickListener接口对象,并重写onClick方法,通过setOnClickListener实现

        该方法和方法三类似,适合于单个或少量控件设置点击事件。
  	    示例代码:
public class ButtonClickActivity extends AppCompatActivity {

      private Button btn_click;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button_click);

        btn_click = findViewById(R.id.btn_click);
        btn_click.setOnClickListener(listener);
    }
    private View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //do something after click
        }
    };

}

方法四:类implement接口OnClickListener,类中重写的OnClickListener接口的onClick方法

	该方法适合多个控件都设置点击事件。
    示例代码:
public class ButtonClickActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btn_click;
    private Button btn_click2;
    private Button btn_click3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button_click);
        
        btn_click = findViewById(R.id.btn_click);
        btn_click2 = findViewById(R.id.btn_click2);
        btn_click3 = findViewById(R.id.btn_click3);
        btn_click.setOnClickListener(this);
        btn_click2.setOnClickListener(this);
        btn_click3.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if (view.getId() == R.id.btn_click){
            //do something after click
        }else if(view.getId() == R.id.btn_click2){
            //do something after click
        }else if(view.getId() == R.id.btn_click3){
            //do something after click
        }
    }
}

五、在xml文件中对按钮添加 android:onClick=”xxx” 属性,在类中实现xxx方法

    该方法同样适合单个或少量控件设置点击事件,优点是代码简洁。
    示例代码:
	布局文件代码:
	

java代码:

public class ButtonClickActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button_click);
    }
    public void onClickButton(View view){
        //do something after click
    }
}

注意:实现的onClickButton()方法是public的,且需要参数view。

总结:
Button所在的Activity需要继承Activity(或继承Activity的子类,如代码中的AppCompatActivity),一般在onCreate方法中对Button对象进行监听。。
前四种方法是通过View的setOnClickListener方法实现,前三种适合较少按钮时使用,第四种适合多个按钮时使用,最后一种是通过xml文件设置按钮onClick属性,并实现onClick对应的方法来实现,也适合较少按钮时使用

参考文章:https://www.cnblogs.com/heixiang/p/10985842.html

你可能感兴趣的:(Android,APP,android,java,安卓,移动开发,app)