第一种;自定义内部类实现OnClickListener接口。
public class MainActivity extends AppCompatActivity {
private Button bt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt= (Button) findViewById(R.id.action_settings);
bt.setOnClickListener(new BtClick());
}
class BtClick implements View.OnClickListener {
@Override
public void onClick(View v) {
//do
}
}
}
第二种:和第一种比较类似,第二种用的匿名内部类。
public class MainActivity extends AppCompatActivity {
private Button bt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt= (Button) findViewById(R.id.action_settings);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
}
第三种:在布局文件的Button中加上 onClick 属性,onClick属性值为一个自己定义的方法名,最后在Activity中创建名字为onClick属性值的方法,返回值为void参数为View。
android:onClick="click"相当于其他几种方法的<span style="background-color:#e4e4ff;"></span>bt.setOnClickListener();
<Button
android:onClick="click"
android:id="@+id/action_bar_title"
android:layout_width="match_parent"
android:layout_height="60dp" />
public class MainActivity extends AppCompatActivity {
private Button bt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt= (Button) findViewById(R.id.action_settings);
}
public void click(View view){
switch (view.getId()){
case R.id.action_settings:
//do
break;
}
}
}
第四种:activity实现
OnClickListener
接口并重写
onClick方法。
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button bt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt= (Button) findViewById(R.id.action_settings);
bt.setOnClickListener(this);//因为实现了<span style="background-color:#e4e4ff;"></span>OnClickListener直接给this
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.action_settings:
break;
}
}