Android 四种常用的监听器

来源:互联网 发布:天文搜星算法 编辑:程序博客网 时间:2024/05/22 00:51

Android 四种常用的监听器

      什么是监听器?

    1、监听器是个抽象类,它包含了一个事件触发时系统会去调用的函数

  2、在子类中,根据您项目的需要重写这个函数

  3、派生后的监听器需要绑定到按钮上,就像一个耳机可以发出声音,但您不去戴它,您是听不到它发出的声音的。一般的情况是这个按钮可能需要这个监听器,而另外一个按钮需要另外一个监听器,每个监听器各司其职,但功能相似时,也可以多个按钮共同绑定一个监听器。

第一种监听器:匿名内部类 

实现方法: listener.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {

}

});


.xml

 <Button

        android:id="@+id/listener"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="listener" />

.java

public class MainActivity extends ActionBarActivity {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

       Button listener = (Button) findViewById(R.id.listener);

       listener.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

Toast.makeText(MainActivity.this"我是匿名内部类", 0).show();

}

});

}

第二种监听器 xml监听器   (这种想控制Button的属性 例如setEnabled  还有双击的时候   不推荐使用这种   )

.xml中加个onClick语句

.xml

<Button

        android:id="@+id/listener"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:onClick="click"

        android:text="listener" />

.java

public class Xml_listener_Activity extends ActionBarActivity {

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_xml_listener);

}

 

public void click(View view){

Toast.makeText(this"我是xml监听器", 0).show();

}

}

第三种监听器   activity本身作为监听器

这个把你的类实现了OnClickListener接口

.xml

  <Button

        android:id="@+id/listener"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="listener" />

.java

public class ActivityListenerActivity extends ActionBarActivity implements OnClickListener{

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_activity_listener);

TextView listener = (TextView) findViewById(R.id.listener);

listener.setOnClickListener(this);

}

 

@Override

public void onClick(View arg0) {

Toast.makeText(this"我是activity本身作为监听器", 0).show();

}

}

第四种监听器    内部类作为监听器


.xml

  <Button

        android:id="@+id/listener"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="listener" />

.java

public class InsideListenerActivity extends ActionBarActivity {

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_inside_listener);

TextView list = (TextView) findViewById(R.id.listener);

mylistener listener=new mylistener();

list.setOnClickListener(listener);

}

class mylistener implements OnClickListener{

 

@Override

public void onClick(View arg0) {

Toast.makeText(InsideListenerActivity.this"我是内部类作为监听器", 0).show();

}

}

 









0 0
原创粉丝点击