Button、ImageButton事件监听(setOnClickListener)
方法一:通过匿名内部类实现
代码如下:
package com.note.demo2;import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class MainActivity extends ActionBarActivity {
//声明登录按钮loginButton
private Button loginButton;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化按钮,把xml中的按钮赋值给声明的变量 ,通过R的ID寻找。
//findViewById返回的是一个view对象,要转换成button对象,设置一个button监听对象。
loginButton=(Button) findViewById(R.id.button1);// 1、监听事件通过匿名内部类实现
loginButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//在当前onClick方法中监听点击button动作
show("通过内部类实现,你点击我了哦");
}
});
}
public void show(String str){
Toast toasts=Toast.makeText(this,str , Toast.LENGTH_SHORT);
toasts.show(); }
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
结果:
方法二:通过独立类实现
package com.note.demo2;import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends ActionBarActivity { //声明登录按钮loginButton
private Button loginButton;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化按钮,把xml中的按钮赋值给声明的变量 ,通过R的ID寻找。
//findViewById返回的是一个view对象,要转换成button对象,设置一个button监听对象。
loginButton=(Button) findViewById(R.id.button1); // 2、监听事件通过独立类实现
loginButton.setOnClickListener(listener);
}
OnClickListener listener=new OnClickListener() {
public void onClick(View v) {
show("通过独立类实现,你点击我了哦");
}
};
public void show(String str){
Toast toasts=Toast.makeText(this, str, Toast.LENGTH_SHORT);
toasts.setGravity(Gravity.TOP, 0, 220);
toasts.show(); }
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
结果如下:
方法三:通过接口的方式实现事件监听
package com.note.demo2;import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends ActionBarActivity implements OnClickListener { //声明登录按钮loginButton
private Button loginButton;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化按钮,把xml中的按钮赋值给声明的变量 ,通过R的ID寻找。
//findViewById返回的是一个view对象,要转换成button对象,设置一个button监听对象。
loginButton=(Button) findViewById(R.id.button1); //通过实现接口的方法实现监听事件 loginButton.setOnClickListener(this);
}
public void onClick(View v) {
show("通过实现接口的方法实现");
} public void show(String str){
Toast toasts=Toast.makeText(this, str, Toast.LENGTH_SHORT);
toasts.setGravity(Gravity.TOP, 0, 220);
toasts.show(); }
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}}
结果如下: