一个demo弄懂Button控件的四种监听方式

来源:互联网 发布:知乎为什么叫绿乎 编辑:程序博客网 时间:2024/06/02 18:53
Button是android最重要的控件之一,Button控件的监听无疑是该控件学习的重中之重。下面用一个demo来说明一下**Button控件的四种监听方式**。Button有四种监听方式:1.匿名内部类方式(Button1)2.Activity实现OnClickListener接口(Button2)3.创建一个独立的MyOnClickListener类,实现OnClickListener接口(Button3)4.android:onClick属性指定自定义的MyOnClick方法(Button4)布局文件代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/LinearLayout1"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.buttonlistener.MainActivity" >    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Button1" />     <Button        android:id="@+id/button2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Button2" />      <Button        android:id="@+id/button3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Button3" />       <Button        android:id="@+id/button4"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Button4"         android:onClick="myOnClick"        /></LinearLayout>
MainActivity中的代码如下:
public class MainActivity extends Activity implements OnClickListener {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //匿名内部类方式        Button button1 =(Button)findViewById(R.id.button1);        button1.setOnClickListener(new OnClickListener(){            @Override            public void onClick(View arg0) {                Toast.makeText(MainActivity.this, "Button1 clicked!", Toast.LENGTH_LONG).show();            }        });        //MainActivity实现OnClickListener接口        Button button2 =(Button)findViewById(R.id.button2);        button2.setOnClickListener(MainActivity.this);        //创建独立的监听器类,可重复利用        Button button3 =(Button)findViewById(R.id.button3);        button3.setOnClickListener(new MyOnClickListener(MainActivity.this));    }    @Override    //MainAcitivity实现OnClickListener接口要实现的函数    public void onClick(View arg0) {        Toast.makeText(MainActivity.this, "Button2 clicked!", Toast.LENGTH_LONG).show();    }    //android:onclick属性指定的自定义的监听函数    public void myOnClick(View arg0) {        Toast.makeText(MainActivity.this, "Button4 clicked!",Toast.LENGTH_LONG).show();    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}
自定义的MyOnClickListener监听类代码如下:
//独立的监听类,可重复使用public class MyOnClickListener implements OnClickListener{    Context context;    public MyOnClickListener(Context context)    {        this.context=context;    }    @Override    public void onClick(View arg0) {        Toast.makeText(context, "Button3 clicked!",Toast.LENGTH_LONG).show();    }}
0 0
原创粉丝点击