2014-01-20 42 views

回答

0

该应用程序将在Android 2.3的崩溃,因为它缺乏一些API> 10级的资源,以便:

  1. 转到 “XListFragment” 并更改以下行:

setListAdapter(新ArrayAdapter(getActivity (),R.layout.main_list_item,android.R.id.text1,DummyContent.ITEMS));

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

  1. Got o“XDetailActivity”and comment this line“getActionBar()。setDisplayHomeAsUpEnabled(true);”

为了得到actionBar,应该使用Compatability库。

3

答案是YES

需要进行两项更改才能使其在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。在ItemDetailActivity中使用getActionBar()将此行更改为此:

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上运行该项目。

+0

你提到更多信息作为你下一篇文章的主题。有这样一个职位吗? – Erhannis