这是根据《Android 编程权威指南》(Android Programming The Big Nerd Ranch Guide)书中的例子工程的编码;
其中源码已上传到github 上,现在还没完成的,我会根据自己的学习进度不断的进行更新,直至完成整本书的学习。
下面是CriminalIntent应用,源码在https://github.com/yxhuangCH/criminalintent ,可自行下载;
2015.03.08 完成至第18章:上下文菜单与操作模式
其中第16章:操作栏, 因为版本的问题,书中的一些代码不能编译,所以进行了一些改动。
1.代码清单16-2 创建菜单资源
改为
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:criminalintent ="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/menu_item_new_crime" android:icon="@drawable/ic_menu_add" android:title="@string/new_crime" criminalintent:showAsAction="always"/> <item android:id="@+id/menu_item_show_subtitle" android:title="@string/show_subtitle" android:showAsAction="ifRoom"/> <!--criminalintent:showAsAction="always"/>--> <!--因为是要是用兼容性,所以,第四行 xmlns:criminalintent ="http://schemas.android.com/apk/res-auto" > 和第八行criminalintent:showAsAction="always"/> 加上,与 16.1.1章节中有所不同。 --> </menu>
2、代码清单16-8 启动向上导航按钮
将书本中的getActionBar()替换成getSupportActionBar(),然后进行类型转换。要不然会出现空指针异常。后面的代码清单16-15,16-16,16-19,中也要进行同样的修改。
//16.2.1 启动向上的导航按钮 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ if (NavUtils.getParentActivityName(getActivity()) != null){ // 书本原句运行出线 NullPointerException // getActivity().getActionBar().setDisplayHomeAsUpEnabled(true); ((ActionBarActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); } }