2016-02-29 71 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

相关问题