我需要在Android 2.3上使用Master / Detail Flow模板。这可能吗?
答案 0 :(得分:3)
答案是是。
需要进行两项更改才能在Android 2.3上运行。
首先,生成的类ItemListFragment包含API级别11中引入的布局常量:simple_list_item_activated_1。此特定布局突出显示激活的列表项。如果您有多窗格布局,这很有用,因为它向用户显示选择了哪个列表项并在详细信息窗格中显示。
我现在忽略了突出显示,只是尝试让代码运行:
int layout = android.R.layout.simple_list_item_1;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
layout = android.R.layout.simple_list_item_activated_1;
}
setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(
getActivity(),
layout,
android.R.id.text1,
DummyContent.ITEMS));
第二个问题是ActionBar,在没有添加额外库的情况下,旧版设备无法使用。由于这是我下一篇文章的主题,我现在暂时忽略旧设备上的ActionBar。在ItemDetailActivity:
中将getActionBar()的行更改为thisif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getActionBar().setDisplayHomeAsUpEnabled(true);
}
现在你得到一个Lint警告。该调用需要API级别11,但您的清单文件将API级别9指定为最低要求。添加注释以禁止onCreate()方法的新API警告:
@SuppressLint("NewApi")
现在更改AndroidManifest.xml文件以支持API级别9:
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="16" />
通过这些更改,您现在可以在Android 2.3上运行该项目。
答案 1 :(得分:0)
该应用程序将在Android 2.3上崩溃,因为它缺少某些API&gt; 10个资源所以:
setListAdapter(new ArrayAdapter(getActivity(),R.layout.main_list_item,android.R.id.text1,DummyContent.ITEMS));
将布局更改为您自己的布局。
为了获得actionBar,应该使用Compatability库。