簡體   English   中英

Android 2.3上的主/詳細流模板

[英]Master/Detail Flow template on Android 2.3

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

答案是肯定的

需要進行兩項更改才能在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上運行該項目。

該應用程序將在Android 2.3上崩潰,因為它缺少一些API> 10資源,因此:

  1. 轉到“XListFragment”並更改以下行:

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

將布局更改為您自己的布局。

  1. 得到“XDetailActivity”並對此行進行評論“getActionBar()。setDisplayHomeAsUpEnabled(true);”

為了獲得actionBar,應該使用Compatability庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM