在“安卓学习第三天”中,对Hello_World程序的代码进行了基本的解析。MainActivity.java中定义的MainActivity是程序的主活动,在该主活动的定义中重载onCreate()方法和onCreateOptionsMenu()方法可以实现主活动界面布局和菜单的显示。界面布局和菜单的具体内容由activity_main.xml和main.xml决定,安卓应用程序的活动是在AndroidManifest.xml中进行注册的。
今天,将学习安卓应用程序中,对点击按键的响应。最终实现的功能是,当点击主活动上的按键后,将TextView控件上显示的内容进行修改。
1 按键控件的添加
鼠标左键双击res->layout->activity_main.xml,之后,点击下半部分的Graphical Layout选项卡,显示图形视图,如图1-1所示。
图1-1 打开Graphical Layout
之后,在左侧的“Palette->FormWidgets”中将“Button”拖入到活动中来,并且在右侧的“Properties”的列表中将其“Text”属性修改为“按键1”,如图1-2所示。
图1-2 向活动中添加按键
2 按键响应的添加
设置按键的响应,首先要获取按键对应的Button类对象,之后通过Button类对象来设置响应。
2.1按键View的获取
通过Activity类的findViewById()方法,可以获取Button类的对象。该方法的格式为:
public View findViewById(int id)
其中,View类是Button类的父类,参数id是按键的ID,该ID是在界面布局文件activity_main.xml中指定,如图2-1所示。
图2-1activity_main.xml中Button的信息
从图2-1中可以看出,按键控件的id是“button1”,按键显示的内容是“按键1”,其它项表示按键的宽度和高度等信息。
鼠标双击“src->com.exmaple.hello_world->MainActivity.java”,打开MainActivity.java文件,在MainActivity类的onCreate()方法中输入如下代码,获取Button类的对象。
Button myButton= (Button)findViewById(R.id.button1);
其中R.id.button1是添加的按键的ID,可以在R.java中找到button1的定义(查找定义的方法见“安卓学习第三天”)。由于findViewBuId()方法返回值是View类的对象,而Button类是View类的子类,因此在该方法的返回值前加入(Button)将返回值转换为Button类的对象,即myButton。
2.2 按键回调的设置
通过获取到的Button类对象调用setOnClickListener()方法设置按键回调方法,该方法的格式是:
public void setOnClickListener(View.OnClickListener)
其中View.OnClickListener是View的接口,这个接口中定义了onClick()方法,当点击View时,该方法就会被调用。因此,需要对View.OnClickListener接口的onClick()方法进行重载,从而实现自定义的回调方法。
1 myButton.setOnClickListener(new OnClickListener(){
2 @Override
3 public void onClick(View v){
4 TextView myTextView = (TextView)findViewById(R.id.textView1);
5 myTextView.setText("你点了按键");
6 }
7 });
其中,第一行通过new关键字新建了一个View.OnClickListener()接口,第2-7行表示对该接口的onClick()方法进行重载,第4行获取了TextView类的对象,第5行通过TextView对象调用了setText()方法设置控件显示的内容。如图2-2和图2-3所示。
图2-2 程序运行界面
图2-3 点击按键后的界面
3 小结
今天学习了按键控件回调方法的设置。首先“res->layout->activity_main.xml”添加按键控件,之后在“src->com.exmaple.hello_world->MainActivity.java”中设置控件的回调方法。通过findViewById()获取按键类的对象,之后通过setOnClickListener()设置View.OnClickListener()接口,并且重载该接口中的onClick()方法。按键的回调方法实际上就是onClick()方法。在onClick()方法中,通过setText()方法设置TextView控件显示的内容。