新手Android开发之二:onclicklistener到底怎么用?
2014-01-15 17:58
447 查看
相信很多像我一样的新手学习ANDROID开发会遇到这个问题,通过这几天的归类和总结,将我的理解写在下面,欢迎大家一起前来讨论:
以按钮BUTTON的监听事件为例,以下的监听实现都是等价的:
1.使用接口继承按钮监听方法:
[javascript]
view plaincopy
package dickren123.hui.say_hello_to_world;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
/* 这里接口继承的方法是隶属于按钮BUTTON的,因此前面导入的头文件只需有BUTTON即可*/
public class Hello_to_worldActivity extends Activity implements Button.OnClickListener{
/** Called when the activity is first created. */
private Button btn_say_hello;
private TextView hello_world;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_say_hello = (Button)findViewById(R.id.bnt_SAY_HELLO_TO_WORLD);
hello_world = (TextView)findViewById(R.id.textView1);
btn_say_hello.setOnClickListener(this) ;//由于该类继承了BUTTON的监听,
} //因此设置监听的参数只需传本类的对象即可
public void onClick(View v) {
// TODO Auto-generated method stub
hello_world.setText("dickren123!");//抽象接口的内部方法的实现
}
}
2.使用接口继承view类的监听方法
[javascript]
view plaincopy
package dickren123.hui.say_hello_to_world;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;/* 导入的头文件需要有view类监听*/
import android.widget.Button;
import android.widget.TextView;
public class Hello_to_worldActivity extends Activity implements OnClickListener{
/** Called when the activity is first created. */
private Button btn_say_hello;
private TextView hello_world;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_say_hello = (Button)findViewById(R.id.bnt_SAY_HELLO_TO_WORLD);
hello_world = (TextView)findViewById(R.id.textView1);
btn_say_hello.setOnClickListener(this) ;//由于该类继承了view的监听,
} //因此设置监听的参数只需传本类的对象即可
public void onClick(View v) {
// TODO Auto-generated method stub
hello_world.setText("dickren123!");//抽象接口的内部方法的实现
}
}
3.不用接口,在类内部直接实现监听
[javascript]
view plaincopy
package dickren123.hui.say_hello_to_world;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Hello_to_worldActivity extends Activity {
/** Called when the activity is first created. */
private Button btn_say_hello;
private TextView hello_world;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_say_hello = (Button)findViewById(R.id.bnt_SAY_HELLO_TO_WORLD);
hello_world = (TextView)findViewById(R.id.textView1);
btn_say_hello.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) { //使用匿名的Button实例
// TODO Auto-generated method stub
hello_world.setText("dickren123!");//抽象接口的内部方法的实现
}
}) ;
}
}
如果不使用匿名实例,也可以定义一个具体的实例,如下:
[javascript]
view plaincopy
package dickren123.hui.say_hello_to_world;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Hello_to_worldActivity extends Activity {
/** Called when the activity is first created. */
private Button btn_say_hello;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_say_hello = (Button)findViewById(R.id.bnt_SAY_HELLO_TO_WORLD);
btn_listener bl = new btn_listener();
btn_say_hello.setOnClickListener(bl); //bl是类btn_listener的实例,而btn_listener为监听方法的接口
} //因此设置监听的参数只需传本类的对象即可
}
class btn_listener implements Button.OnClickListener
{
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
希望大家多多交流!^^
以按钮BUTTON的监听事件为例,以下的监听实现都是等价的:
1.使用接口继承按钮监听方法:
[javascript]
view plaincopy
package dickren123.hui.say_hello_to_world;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
/* 这里接口继承的方法是隶属于按钮BUTTON的,因此前面导入的头文件只需有BUTTON即可*/
public class Hello_to_worldActivity extends Activity implements Button.OnClickListener{
/** Called when the activity is first created. */
private Button btn_say_hello;
private TextView hello_world;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_say_hello = (Button)findViewById(R.id.bnt_SAY_HELLO_TO_WORLD);
hello_world = (TextView)findViewById(R.id.textView1);
btn_say_hello.setOnClickListener(this) ;//由于该类继承了BUTTON的监听,
} //因此设置监听的参数只需传本类的对象即可
public void onClick(View v) {
// TODO Auto-generated method stub
hello_world.setText("dickren123!");//抽象接口的内部方法的实现
}
}
2.使用接口继承view类的监听方法
[javascript]
view plaincopy
package dickren123.hui.say_hello_to_world;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;/* 导入的头文件需要有view类监听*/
import android.widget.Button;
import android.widget.TextView;
public class Hello_to_worldActivity extends Activity implements OnClickListener{
/** Called when the activity is first created. */
private Button btn_say_hello;
private TextView hello_world;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_say_hello = (Button)findViewById(R.id.bnt_SAY_HELLO_TO_WORLD);
hello_world = (TextView)findViewById(R.id.textView1);
btn_say_hello.setOnClickListener(this) ;//由于该类继承了view的监听,
} //因此设置监听的参数只需传本类的对象即可
public void onClick(View v) {
// TODO Auto-generated method stub
hello_world.setText("dickren123!");//抽象接口的内部方法的实现
}
}
3.不用接口,在类内部直接实现监听
[javascript]
view plaincopy
package dickren123.hui.say_hello_to_world;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Hello_to_worldActivity extends Activity {
/** Called when the activity is first created. */
private Button btn_say_hello;
private TextView hello_world;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_say_hello = (Button)findViewById(R.id.bnt_SAY_HELLO_TO_WORLD);
hello_world = (TextView)findViewById(R.id.textView1);
btn_say_hello.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) { //使用匿名的Button实例
// TODO Auto-generated method stub
hello_world.setText("dickren123!");//抽象接口的内部方法的实现
}
}) ;
}
}
如果不使用匿名实例,也可以定义一个具体的实例,如下:
[javascript]
view plaincopy
package dickren123.hui.say_hello_to_world;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Hello_to_worldActivity extends Activity {
/** Called when the activity is first created. */
private Button btn_say_hello;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_say_hello = (Button)findViewById(R.id.bnt_SAY_HELLO_TO_WORLD);
btn_listener bl = new btn_listener();
btn_say_hello.setOnClickListener(bl); //bl是类btn_listener的实例,而btn_listener为监听方法的接口
} //因此设置监听的参数只需传本类的对象即可
}
class btn_listener implements Button.OnClickListener
{
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
希望大家多多交流!^^
相关文章推荐
- 新手Android开发之二:onclicklistener到底怎么用?
- 新手Android开发之二:OnClickListener到底怎么用?
- 新手Android开发:onclicklistener到底怎么用?
- Android APT开发教程 六 使用注解替代setOnClickListener还有注释给String赋值
- android开发中监听器的三种实现方法(OnClickListener)
- Android开发中setOnclicklistener抛出空指针的解决办法
- Android开发 - 常用点击响应事件OnClickListener
- android中的View.OnClickListener 怎么使用?我的2.3.3的模拟器不能运行啊?
- Android开发中CheckBox、setOnClickListener和setOnCheckedChangeListener的不同之处在哪
- Android开发中CheckBox的setOnClickListener和setOnCheckedChangeListener的不同之处在哪?
- CVTE Android应用开发工程师笔试题之二:为什么有时候查看别人的代码会乱码?Eclipse查看代码乱码该怎么办?
- onclicklistener到底怎么用?
- Android开发中CheckBox的setOnClickListener和setOnCheckedChangeListener的不同之处在哪?
- android开发中监听器的三种实现方法(OnClickListener)
- 从零开始学android开发-View的setOnClickListener的添加方法
- Android APT开发教程 六 使用注解替代setOnClickListener还有注释
- onclicklistener到底怎么用?
- 【Android开发】解决不同的OnClickListener冲突的问题
- android开发 button的实现方法(OnClickListener)
- Android开发——onclicklistener()到底怎么用?