Android开发从入门到精通(8) _3

 

使用菜单 第八章(3)

  在本节中,你将建造一个应用程序来允许用户从一些不同的Views中进行选择。当用户选择一个View,一个新的活动将被启动。你将要使用给用户选择的工具就是Android菜单。看一下这个插图(略)。当用户激活菜单按钮,菜单就会显示。

    如你所见,从Android主屏幕选择菜单按钮产生一个墙纸的设定选项。你将为你的主活动创建一个类似的菜单,该菜单为View保留所有用户可以从中选择的选项。现在,AndroidViews.java文件的编码应当如下:

package android_programmers_guide.AndroidViews; 
import android.app.Activity; 
import android.os.Bundle; 
public class AndroidViews extends Activity { 
/** Called when the Activity is first created. */ 
@Override 
public void onCreate(Bundle icicle) { 
super.onCreate(icicle); 
setContentView(R.layout.main); 

}

    你增加任何东西到活动中,你需要输入包装一个包装来创建你的菜单。输入android.view.Menu到AndroidViews活动中:

Import android.view.Menu;

    要创建菜单,你需要优先活动的onCreateOptionMenu()方法。onCreateOptionMenu()方法是一个以布尔方式被呼叫的当用户第一次选择菜单按钮。你将使用这个方式来建造菜单并增加可选择的条目到其中。增加下面的代码到AndroidViews.java:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
super.onCreateOptionsMenu(menu); 
}

    你将增加代码在onCreaterOptionMenu()内增加菜单。需要增加的条目是你将要在本项目中创建的Views。下面是将要增加到菜单的清单:

● AutoComplete 自动完成 
● Button 按钮 
● CheckBox 选择框 
● EditText 
● RadioGroup 按钮组 
● Spinner 
    在前面创建的代码优先onCreateOptionsMenu()方法,你在菜单中传递一个菜单变量呼叫菜单。这个变量代表实际的在Android界面中创建的菜单条目。要增加这些条目到菜单中,你要使用menu.add()方法。这个呼叫的语句是:

menu.add(<group>,<id>,<title>) 

参数组被用来与菜单条目相关联。在本例中,你将不使用组。但是,这个值是非常重要的。参数id被用来检测哪一个菜单条目被选择。最后,参数标题是显示在菜单上的文本。

增加下列代码到onCreateOptionsMenu( )方法中:

menu.add(0, 0, "AutoComplete"); 
menu.add(0, 1, "Button"); 
menu.add(0, 2, "CheckBox"); 
menu.add(0, 3, "EditText"); 
menu.add(0, 4, "RadioGroup"); 
menu.add(0, 5, "Spinner");

    你完整的AndroidViews.java文件应当看上去像这样:

package android_programmers_guide.AndroidViews; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
public class AndroidViews extends Activity { 
/** Called when the Activity is first created. */ 
@Override 
public void onCreate(Bundle icicle) { 
super.onCreate(icicle); 
setContentView(R.layout.main); 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
super.onCreateOptionsMenu(menu); 
menu.add(0, 0, "AutoComplete"); 
menu.add(0, 1, "Button"); 
menu.add(0, 2, "CheckBox"); 
menu.add(0, 3, "EditText"); 
menu.add(0, 4, "RadioGroup"); 
menu.add(0, 5, "Spinner"); 
return true; 

}

    如果你执行如上面代码所写,你应当看见如下图所示的菜单(略)。

    这个就是你想要达成的。试着去点击菜单中的任意一个选项。当用户选择一个菜单项目时,你在处理世间的活动中还什么都没有呢。

    你增加的方法优先处理到菜单的呼叫是onOptionsItemSelected( )。再一次,像onCreateOptionsMenu(),当菜单项被选择,onOptionsItemSelected( )是你需要优先一个拥有代码,被执行的布尔方法。优先代码应当如下:

@Override 
public boolean onOptionsItemSelected(Menu.Item item){ 
}

这个代码有个问题:当任何菜单项被选择,onOptionsItemSelected( ) 是个常规被呼叫的方法。你需要给定onOptionsItemSelected( )一条路来识别不同菜单项之间的差别并执行相应的代码。因此,使用一个switch/case 声明来帮助方法从不同的项目中选择。当你创建了菜单项,你定义了一系列的从0到5的数字作为菜单项的值。你可以在case声明中使用一个呼叫来getI()来检测哪一个菜单项被选择:

switch (item.getId()) { 
case 0: 
return true; 
case 1: 
return true; 
case 2: 
return true; 
case 3: 
return true; 
case 4: 
return true; 
case 5: 
return true; 

return true; 

    在这个case声明中,对于每一个id当前设定的动作是返回true.这个不会做任何的事情但是会保留一个开放的可以增加代码的区域。你的AndroidViews.java文件现在可以被用来创建被新菜单系统启动的活动了。完整的AndroidViews.java文件代码应当看上去如下:

package android_programmers_guide.AndroidViews; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
public class AndroidViews extends Activity { 
/** Called when the Activity is first created. / 
@Override 
public void onCreate(Bundle icicle) { 
super.onCreate(icicle); 
setContentView(R.layout.main); 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
super.onCreateOptionsMenu(menu); 
/** Add one menu item for each View in our project */ 
menu.add(0, 0, "AutoComplete"); 
menu.add(0, 1, "Button"); 
menu.add(0, 2, "CheckBox"); 
menu.add(0, 3, "EditText"); 
menu.add(0, 4, "RadioGroup"); 
menu.add(0, 5, "Spinner"); 
return true; 

/** Override onOptionsItemSelected to execute code for each 
menu item */ 
@Override 
public boolean onOptionsItemSelected(Menu.Item item){ 

/** Select statement to handle calls 
to specific menu items */ 
switch (item.getId()) { 
case 0: 
return true; 
case 1: 
return true; 
case 2: 
return true; 
case 3: 
return true; 
case 4: 
return true; 
case 5: 
return true; 

return true; 

    完成了AndroidViews.java,你可以重点去创建其它的活动了,在下一节中,你将在项目中为每一个View创建一个活动并增加代码来启动case声明中view的活动。

为AutoComplete创建一个活动

 

更多信息请查看 http://www.javady.com/index.php/category/thread

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值