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>">
注:如果這些文件被修改,機器人工作室將嘗試更新到新版本時,用默認的替換它們。
你應該總是延長'AppCompatActivity',沒有理由不這樣做。即使您不關心向後兼容性,AppCompatActivity也有許多有用的功能。 –