Action Bar有哪些行为?
最棘手的是运行蜂巢及更高版本的设备显示不同Action Bar功能时,取决于应用程序的目标SDK是设置为蜂巢还是传统的API级别。
我们来看一个简单的例子,假设我们的应用程序包含四个屏幕:一个主Activity和三个“清洁的”Activity(打扫、擦洗和吸尘),我们向主Activity添加一个选项菜单,以便让用户跳转到另三个Activity,如图2所示。

▲图 2 带有一个选项菜单和四个屏幕的简单应用程序
该应用程序两个基本的组件是选项菜单资源文件和主Activity类,其它Activity类只是简单地显示一个ImageView和一个TextView控件,选项菜单资源文件简单定义了选项菜单项,其内容如下:
<menu
xmlns:android=">http://schemas.android.com/apk/res/android">
<item
android:id="@+id/sweep"
android:icon="@drawable/ic_menu_sweep"
android:title="@string/sweep"
android:onClick="onOptionSweep" />
<item
android:id="@+id/scrub"
android:icon="@drawable/ic_menu_scrub"
android:title="@string/scrub"
android:onClick="onOptionScrub" />
<item
android:id="@+id/vacuum"
android:icon="@drawable/ic_menu_vac"
android:title="@string/vacuum"
android:onClick="onOptionVacuum" />
</menu>
主Activity类将这个菜单资源作为一个选项菜单载入,并定义了每个选项菜单项的onClick处理程序,其内容如下:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class ActOnThisActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.cleaningoptions, menu);
return true;
}
public void onOptionSweep(MenuItem i)
{
startActivity(new Intent(this, SweepActivity.class));
}
public void onOptionScrub(MenuItem i)
{
startActivity(new Intent(this, ScrubActivity.class));
}
public void onOptionVacuum(MenuItem i)
{
startActivity(new Intent(this, VacuumActivity.class));
}
}
到现在为止我们没有做任何事情,因此我们在技术上并不需要将应用程序的Android清单文件设置为高目标API级别,我们这里将其设置为API级别9。
当我们在蜂巢设备上运行这个“传统的”应用程序时,系统栏会显示一个像网格的图标(第四个),它和传统Android手机上的“菜单”按钮所起的作用是等同的,只不过它变成一个软件按钮了,点击它将会显示选项菜单,就好像是在一部老式智能手机上一样,如图3所示,屏幕顶部的标题栏仅仅显示了应用程序的标题。

▲图 3 在蜂巢设备上的传统应用程序行为
如果我们修改应用程序Android清单文件的目标API级别,将其设为API级别11(蜂巢),应用程序将自动应用Action Bar机制。
默认情况下,标题栏显示了应用程序图标,名称和所谓的溢出菜单图标,点击这个图标会弹出一个文本菜单,列出选项菜单项,如图4所示。

▲图 4 蜂巢设备上的蜂巢应用程序行为