2017-09-16 108 views
-3

我的應用程序不使用AppCompat,因爲我的minSdkVersion15。我想用它smart-app-rate library但我正在逐漸(預計):如何在AppCompat中使用AppCompat庫?

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 

請注意,我無法將應用程序切換到程序兼容性,因爲A)有沒有真正的需要和B)如果我這樣做,我的應用程序看起來完全不同,它應該。

所以,我試圖下載庫爲ZIP並將其轉換爲不使用AppCompat。我做了this answer中提到的步驟,但現在我得到了一大堆錯誤(如ContextCompat.getColor,我需要用非AppCompat函數替換),我不確定這是否是正確的方法。

我該如何輕鬆解決這個問題?

+0

沒有「如果你的最小SDK比X大,那麼你不應該使用AppCompat」語句。建議使用支持庫(尤其是如果您的min SDK在API中有大的中斷時<21),因爲支持組件提供了與元素進行交互的統一接口,而無需開發人員檢查某些API級別要求。此外,如果將'Theme.AppCompat'定義爲您當前應用程序主題的父級樣式,則會改變外觀,這可能與您當前的方法有所不同。 –

+0

@GergelyKőrössy,謝謝;顯然我錯過了一些知識並需要閱讀。當我將應用更改爲使用AppCompat時,[這是區別](https://i.imgur.com/aLCVaMJ.jpg)。它看起來真的很糟糕,甚至滑塊都丟失了。你有什麼建議,我應該看看我的代碼更進一步嗎? –

+0

那些是什麼樣的組件? appbar文字顏色可以通過使用'Theme.AppCompat.Light.DarkActionBar'作爲你的父母來解決。 –

回答

1

,但現在我得到了一大堆的錯誤(如ContextCompat.getColor,我需要與非程序兼容性功能來代替)

ContextCompat無關與appcompat-v7ContextCompat來自support-compat,我強烈建議使用support-compat工件。

我不確定這是否是正確的方法。

你可以根本不使用庫。否則,您別無選擇,只能交叉移除它以用於appcompat-v7

+0

感謝您的闡述。我決定將我的應用轉換爲使用AppCompat,因爲我非常喜歡這個庫。 –