2016-02-29 111 views
1

我想知道的原因,我的機器人工作室(1.5.0版本)默認情況下延伸AppCompatActivity而不是活動,即使我選擇了最小API級別19和我不不知道它是否有幫助。AppCompatActivity爲Android Studio中默認

Android Studio會警告其他API的棄用方法(例如:Android Studio warns that navigation mode is deprecated in API 21, but I'm using API 19 (and I want to use only it))。

+0

你應該總是延長'AppCompatActivity',沒有理由不這樣做。即使您不關心向後兼容性,AppCompatActivity也有許多有用的功能。 –

回答

0

Appcompat由android studio項目模板設置。

模板路徑爲[android-studio-path]/plugins/android/lib/templates。 當創建一個新的活動,它將包括一個配置文件:活動/普通/ common_globals.xml.ftl,它看起來像這樣:

<#assign theme=getApplicationTheme()!{ "name": "AppTheme", "isAppCompat": true }> 
<#assign themeName=theme.name!'AppTheme'> 
<#assign themeNameNoActionBar=theme.nameNoActionBar!'AppTheme.NoActionBar'> 
<#assign appCompat=theme.isAppCompat!false> 
<#assign appCompatActivity=appCompat && (buildApi gte 22)> 
... 
<global id="appCompat" type="boolean" value="${((isNewProject!false) || (theme.isAppCompat!false))?string}" /> 
<global id="appCompatActivity" type="boolean" value="${appCompatActivity?string}" /> 
... 
<#if !appCompat> 
<global id="superClass" type="string" value="Activity"/> 
... 
<#elseif appCompatActivity> 
<global id="superClass" type="string" value="AppCompatActivity"/> 
... 

「程序兼容性」會,如果它是一個新的是真實的項目或項目正在使用appCompat主題(這是默認主題)。所以如果appCompat變量設置爲false,它將默認使用Activity。

<#assign appCompat=false> 
<global id="appCompat" type="boolean" value="false" /> 

樣式模板也可能需要修改,它們使用appCompat主題。

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat<#if 
     baseTheme?contains("light")>.Light<#if 
     baseTheme?contains("darkactionbar")>.DarkActionBar</#if></#if>"> 

注:如果這些文件被修改,機器人工作室將嘗試更新到新版本時,用默認的替換它們。

+0

我想知道爲什麼我會得到反對票。我測試了它,它工作正常。在開發系統應用程序時禁用compat活動非常有用,因爲在compat活動中可能存在自定義功能,因此首選框架的Activity.java是首選。 – wrkwrk

相關問題