ANDROID基础学习笔记_1_方法的四种绑定方式

这篇博客介绍了Android应用开发的基础知识,通过创建电话拨号器的例子,详细讲解了在Java代码中设置布局、获取控件以及方法的四种绑定方式:1. 创建内部类;2. 使用匿名内部类;3. 直接在Java类中实现接口;4. 在布局文件中绑定。博主分享了学习过程中的关键知识点,包括常用方法、控件操作和代码重构技巧。
摘要由CSDN通过智能技术生成

第一次写安卓应用程序,好激动。。。


首先右键资源管理器(我也不知道是不是叫这个名字) - new - android application project,填选一些东西之后,第一个安卓应用程序就创建好了。

例子是通过做一个电话拨号器来实现的。

先在Graphical Layout视图下拖拽控件,一个电话输入框(Phone),一个按钮(Button)

.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=".MainActivity" >

    <!-- 电话输入框 
    		1 android:id-定义输入框id:@代表java源码所在包下的R.java文件,
    		id代表R里的id方法,et_number就是给这个控件起的名字
    		2 match_parent:自适应父容器宽/长度,同fill_parent-->
    <EditText
        android:id="@+id/et_number"					
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="16dp"
        android:ems="10"
        android:inputType="phone" >
    </EditText>

    <!-- 拨打按钮
    		1 android:onClick:绑定onClick事件,必须在java源文件实现,否则报错
    		2 android:text:指向res/values/strings.xml文件下的name="dail"的string标签
    		快捷键:ctrl+1 -->
    <Button
        android:onClick="dailButtonClick"
        android:id="@+id/bt_dail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/et_number"
        android:layout_below="@+id/et_number"
        android:layout_marginTop="18dp"
        android:text="@string/dail" />

</RelativeLayout>

下面开始介绍方法的四种绑定方式。

加载布局文件需要在.java文件的onCreate方法里写上:setContentView(R.layout.activity_main);

给一个按钮绑定方法,首先要找到这个按钮;想要拨打电话就要找到我们输入的电话号码。

所以我们就可以在.java文件的onCreate方法里写上这两行代码分别获取电话号码和按钮控件:

EditText et = (EditText) MainActivity.this.findViewById(R.id.bt_dail);

Button bt = (Button) this.findViewById(R.id.bt_dail);

第一种: 给按钮注册单击事件,创建内部类,定义点击事件

首先创建内部类,实现OnClickListener接口,重写onClick事件:

private class MyListener implements OnClickListener{		
//		1. 当按钮被点击时调用的方法
		@Override
		public void onClick(View arg0) {
			callPhone();
		}
	}
这里的callPhone是调用的本类的一个方法:

//抽出来的拨打电话方法
	private void callPhone() {
		//将获取的editText转化成字符串
		String num = et.getText().toString().trim();
		//若号码为空则给出提示
		if(TextUtils.isEmpty(num)){
			Toast toast = Toast.makeText(MainActivity.this, "号码不能为空", Toast.LENGTH_SHORT);
			toast.show();
			return;
		}else{
			//若号码不为空那么就创建一个Intent类
			Intent intent = new Intent();
			//调用设置动作的方法setAction,传递参数Intent.ACTION_CALL
			intent.setAction(Intent.ACTION_CALL);
			//调用设置数据的方法setData,传递Uri。URL:统一资源定位符 URI:统一资源标识符
			intent.setData(Uri.parse("tel:"+num));
			//执行方法,即拨打电话
			startActivity(intent);
		}
	}
最后就是在onCreate方法里绑定到按钮上了。
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载布局文件
        setContentView(R.layout.activity_main);
        //找到指定按钮,号码文本框
        Button bt = (Button) this.findViewById(R.id.bt_dail);
        EditText et = (EditText) MainActivity.this.findViewById(R.id.bt_dail);
//     //1. 给按钮注册单击事件,创建内部类,定义点击事件
        bt.setOnClickListener(new MyListener());
    }

第二种:创建匿名内部类

很简单,就是直接在按钮的setOnClickListener方法里传一个参数,这个参数就是声明出来的匿名内部类实例同样是重写onClick事件,整段代码写到onCreate方法里即可:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载布局文件
        setContentView(R.layout.activity_main);
        //找到指定按钮,号码文本框
        Button bt = (Button) this.findViewById(R.id.bt_dail);
        EditText et = (EditText) MainActivity.this.findViewById(R.id.bt_dail);
		//2. 创建匿名内部类
		bt.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				callPhone();
			}
		});
第三种:实现OnClickListener接口

使生成的MainActivity类实现OnClickListener接口,重写onClick事件,直接调用:

					   //实现OnClickListener接口
public class MainActivity extends Activity implements OnClickListener {

    //将EditText改为全局变量
    private EditText et;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载布局文件
        setContentView(R.layout.activity_main);
        //找到指定按钮
        Button bt = (Button) this.findViewById(R.id.bt_dail);
        et = (EditText) MainActivity.this.findViewById(R.id.bt_dail);
	//3. 实现OnClickListener接口
        bt.setOnClickListener(this);
    }
    //3.实现OnClickListener接口的onclick方法
    @Override
    public void onClick(View v) {
	switch (v.getId()) {
 	case R.id.bt_dail:
		 callPhone();
		break;
	 }
     }
}
这里我一直有个地方搞不懂,那就是为什么bt调用了setOnclicklistener方法,然而他却执行了实现的onclick方法。又不能看源码,真是别扭。。。

而且听介绍说,这是最推荐使用的一种方式。。。

第四种:在布局文件绑定点击方法

上面的.xml文件,button标签里有一个属性android:onClick就是用来绑定点击事件的,所以.xml里起的名字是dailButtonClick,.java就要对应着有一个相同名字的方法dailButtonClick

	//4. 在布局文件绑定点击方法
	public void dailButtonClick(View v){
		callPhone();
	}
以上就是四种方法绑定方式,最主要的就是:

1.记住怎么布局应用程序界面,学会运用各种属性;

2.记住几个比较重要的方法,比如setContentView、通过id定位布局文件的空间this.findViewById(R.id.bt_dail)、按钮设置监听的方法Button.setOnClickListener、EditText获取文本的方法getText、判断文本是否为空的方法TextUtils.isEmpty(num)、显示提示信息Toast.makeText(MainActivity.this, "号码不能为空", Toast.LENGTH_SHORT)、Intent类里的设置动作的方法setAction和设置数据的方法setData、还有执行拨打电话这个动作的方法(我猜他和setContentView都来自父类Activity);

3.Button、EditText这两个类好像都来自widget类包?以后有时间查查去。。。

4.eclipse抽取一段代码出来单独做一个方法的方法:选中要抽取的代码—右键—Refactor—Extract Method然后就可以抽出来在哪个类里生成用什么修饰符修饰的方法了。。。快捷键alt+shift+m

这就是第一次学到的一点东西,也许有很多理解不到位的地方吧。希望以后能通过练习增强理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值