Android 2.3上的主/详细流模板

时间:2014-01-20 10:20:27

标签: android android-fragments

我需要在Android 2.3上使用Master / Detail Flow模板。这可能吗?

2 个答案:

答案 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()的行更改为this
if (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个资源所以:

  1. 转到“XListFragment”并更改以下行:
  2. setListAdapter(new ArrayAdapter(getActivity(),R.layout.main_list_item,android.R.id.text1,DummyContent.ITEMS));

    将布局更改为您自己的布局。

    1. 获得“XDetailActivity”并对此行进行评论“getActionBar()。setDisplayHomeAsUpEnabled(true);”
    2. 为了获得actionBar,应该使用Compatability库。