3

我必須爲手機和平板電腦寫一個應用程序,我想爲兩者使用相同的項目。似乎使用兼容性庫編寫可重用的代碼是很好的。片段與兼容包和>蜂窩

是否可以共享相同的Fragment類?

我在考慮一個開始的活動,在前蜂窩活動和後蜂窩中「分岔」應用程序,重用相同的Fragment類。事實是,如果我包含android.app.Fragment,該片段將無法在FragmentActivity中使用,反之亦然。 我只能使用FragmentActivities,但這會阻止使用該操作欄。

如何做到這一點?

回答

0

示例here中的解決方案似乎不合適。 對於聯繫人,問題是有一個已棄用的類,但仍然可以編譯它。 如果你引用android.app.Fragment,如果使用導入android.support.v4.app.Fragment的片段,你不能編譯該類,但如果使用導入android.support.v4.app.Fragment,則無法編譯該類(只有當你即使在蜂窩上也不停地使用支持庫,這似乎並不是最好的做法)。

我設法做到這一點,只有兩個不同的項目公開兩個不同的代理實現。比我對每個sdk使用正確的實現。它並不像看起來那麼簡單,因爲你必須爲FragmentTransaction,FragmentManager等做一個代理。

它對我有用,但它不適用於具有片段的設置。在這種情況下,使用fragment的xml文件不能用pre-honeycomb sdk編譯。

+0

嗯,似乎現在的工作,使用手機和平板電腦不同的活動,並使用相同的碎片android.support.v4.app.Fragment。 ActionBar代碼僅由平板電腦的活動管理。 使用min_sdk = 7和target_sdk = 13,使用sdk 13 libs會訣竅! 感謝大家。 – DeliriumTremens

+0

但這意味着你也使用蜂窩上的支持庫,對吧?那麼設置呢?如何在不使用兩個分離的庫的情況下實現兩種不同的實現? – kingston

+0

我只是使用支持庫也在蜂窩上,它似乎工作正常。我僅在代碼中管理片段,而不是xml。 – DeliriumTremens

0

是的,你可以共享相同的Fragment類。你不想在手機上觸摸操作欄代碼(蜂窩前),所以一個簡單的方法是簡單地將操作欄代碼隱藏在適用於蜂窩+的Fragment中的適配器類中,請參閱回答here

然後你可以做的一件事就是利用特定版本/大小的資源,例如菜單,菜單v11等將菜單項添加到平板電腦上的操作欄或標準菜單彈出窗口中電話。

0

您可以使用ActionBarSherlock這是一個兼容性庫,它集成並建立在Google自己的兼容性庫上,但爲Action Bar提供向後兼容性以及片段和所有其他好東西。

它使用由API 13+提供的原生ActionBar類,因此代碼應該可以重用於您的「叉子」(或者您可能不必分叉/根本)。

值得擁有網站的瀏覽...