Android点击事件的4种写法

来源:互联网 发布:ecshop换模板sql查询 编辑:程序博客网 时间:2024/05/16 10:27
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    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.phonecall.MainActivity" >    <EditText        android:id="@+id/call_phone"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="23dp"        android:ems="10"        android:inputType="phone" >        <requestFocus />    </EditText>    <Button        android:id="@+id/dial"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignRight="@+id/call_phone"        android:layout_below="@+id/call_phone"        android:layout_marginTop="18dp"        android:text="@string/dial" />    </RelativeLayout>

1、2、3三种方法都是用上面的UI界面

1、创建一个内部类 定义点击事件

MainActivity.java
package com.example.phonecall;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.text.TextUtils;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends ActionBarActivity{private Button dial  = (Button) this.findViewById(R.id.dial);;private EditText call_number = (EditText) this.findViewById(R.id.call_phone);    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        dial.setOnClickListener(new MyListener());    }<pre name="code" class="java">    private MyListener implements OnClickListener{    String number = call_number.getText().toString().trim();if (TextUtils.isEmpty(number)) {Toast.makeText(MainActivity.this, "号码不能为空", Toast.LENGTH_SHORT).show();return;}//意图干一件什么事情Intent intent = new Intent();intent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:"+number));startActivity(intent);break;    }            @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);    }}

2、采用匿名内部类

MainActivity.java
package com.example.phonecall;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.text.TextUtils;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends ActionBarActivity{private Button dial  = (Button) this.findViewById(R.id.dial);;private EditText call_number = (EditText) this.findViewById(R.id.call_phone);    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                dial.setOnClickListener(new OnClickListener(){        @Override    public void onClick(View v) {    // TODO Auto-generated method stub    String number = call_number.getText().toString().trim();        if (TextUtils.isEmpty(number)) {Toast.makeText(MainActivity.this, "号码不能为空", Toast.LENGTH_SHORT).show();return;}    //意图干一件什么事情    Intent intent = new Intent();    intent.setAction(Intent.ACTION_CALL);        intent.setData(Uri.parse("tel:"+number));    startActivity(intent);    }        });            }            @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);    }}



3、接口里面为实现的方法(常用写法)

MainActivity.java
package com.example.phonecall;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.text.TextUtils;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends ActionBarActivity implements OnClickListener{private Button dial  = (Button) this.findViewById(R.id.dial);;private EditText call_number = (EditText) this.findViewById(R.id.call_phone);    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);       <span style="color:#ff0000;"> dial.setOnClickListener(this);</span>    }        @Overridepublic void onClick(View v) {// TODO Auto-generated method stub    switch (v.getId()) {case R.id.call_phone:String number = call_number.getText().toString().trim();if (TextUtils.isEmpty(number)) {Toast.makeText(MainActivity.this, "号码不能为空", Toast.LENGTH_SHORT).show();return;}//意图干一件什么事情Intent intent = new Intent();intent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:"+number));startActivity(intent);break;default:break;}}        @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);    }}

4、在UI界面上写明要调用的函数

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    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.phonecall.MainActivity" >    <EditText        android:id="@+id/call_phone"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="23dp"        android:ems="10"        android:inputType="phone" >        <requestFocus />    </EditText>    <Button        <span style="color:#ff0000;">android:onClick="dialButtonClicked"</span>        android:id="@+id/dial"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignRight="@+id/call_phone"        android:layout_below="@+id/call_phone"        android:layout_marginTop="18dp"        android:text="@string/dial" />    </RelativeLayout>

MainActivity.java

package com.example.phonecall;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.text.TextUtils;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends ActionBarActivity{private EditText call_number = (EditText) this.findViewById(R.id.call_phone);    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    private MyListener implements OnClickListener{    String number = call_number.getText().toString().trim();if (TextUtils.isEmpty(number)) {Toast.makeText(MainActivity.this, "号码不能为空", Toast.LENGTH_SHORT).show();return;}//意图干一件什么事情Intent intent = new Intent();intent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:"+number));startActivity(intent);break;    }    public void dialButtonClicked(View v) {    String number = call_number.getText().toString().trim();if (TextUtils.isEmpty(number)) {Toast.makeText(MainActivity.this, "号码不能为空", Toast.LENGTH_SHORT).show();return;}//意图干一件什么事情Intent intent = new Intent();intent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:"+number));startActivity(intent);}                @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);    }}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 公众号申请链接无效怎么办 指纹打卡机时间调错已打卡怎么办 智慧云平台先锋讲座打不开怎么办 下雨穿套裙工装好冷怎么办 国家债务违约不要国际融资怎么办 欠钱的确还不起怎么办 生完孩孑后手发账握不死手怎么办 工作调动没啥消息怎么办 裁剪刀老是推歪怎么办 衣服上粘胶水了怎么办 衣服钻掉了有胶怎么办 衣服上贴纸掉了怎么办 裤子沾上502胶水怎么办 衣服上沾泡沫胶怎么办 衣服上面滴上502怎么办 502胶水弄衣服上怎么办 裤子上粘了胶怎么办 胶水滴在衣服上怎么办 衣服上有502胶水怎么办 衣服上面粘了胶怎么办 衣服上的胶干了怎么办 凌晨4点到火车站怎么办 运管罚款没钱交怎么办 郑州地铁票没买怎么办 遇到吸毒者拦路威胁要钱怎么办 开车遇见拦路要钱的怎么办 高速上有人拦车怎么办 马路上有人拦车怎么办 苹果手机下截软件要钱怎么办 孩子在学校问同学要钱怎么办 在学校被同学要钱怎么办 把人家店砸了要怎么办 外汇出金不到账怎么办 把罚款单弄丢了怎么办 在12306买不到下铺怎么办有 地铁票买反了怎么办 香港买错特惠票怎么办 到达迪拜t3 后怎么办 海藻面膜调多了怎么办 被鸡爪子抓伤了怎么办 被鸡抓伤肿了怎么办