为啥 Android Studio 告诉我使用 getSupportActionBar() 而不是 getActionBar()?

Posted

技术标签:

【中文标题】为啥 Android Studio 告诉我使用 getSupportActionBar() 而不是 getActionBar()?【英文标题】:Why is Android Studio telling me to use getSupportActionBar() instead of getActionBar()?为什么 Android Studio 告诉我使用 getSupportActionBar() 而不是 getActionBar()? 【发布时间】:2014-10-25 04:13:18 【问题描述】:

只需在这个新奇的 android Studio 0.8.6 beta 中添加一个非常简单的帮助活动(仅显示资源文件中的 html 文本块)到一个非常简单的测试应用程序,我就会收到以下警告,没有提供任何理由/理由:

有人知道为什么吗?

还有任何文档,因为 Android Studio 没有提供任何文档,也无法在 android 网站上找到任何特定的文档。

如果有警告的理由,有人可以指点我一个完整的例子吗,因为它的类几乎是完全通用的/每个例如周围的大多数例子

public class HelpActivity extends Activity 

  @Override
  protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_help);

    ActionBar actionBar = getActionBar();
    actionBar.setTitle(getString(R.string.action_help));

    TextView helpText = (TextView) findViewById(R.id.help_text);
    helpText.setText(Html.fromHtml(getString(R.string.help_markup)));
  

【问题讨论】:

【参考方案1】:

getSupportActionBar()getActionBar() 相同,但来自 Android 支持库。

Android Studio 建议您切换到 getSupportActionBar(),因为如果您不这样做,您的应用程序将无法向后兼容以前的 Android 版本。

如果您打算向后兼容,最好尽可能使用 Android 支持库 - 否则您的应用程序可能会在旧平台上崩溃。如果您不打算向后兼容,则可以忽略此警告。

有关更多信息,请查看docs for ActionBarActivity,其中告诉您:

getSupportActionBar():支持库版本getActionBar()。

【讨论】:

谢谢,关于使用支持类有什么官方的(除了新工具中弹出的模糊警告)吗?我问,因为 droid 网站上的文档和示例仍然使用原始文档。 @arober11 老实说,来自 dev.android 的 the Support Library page 是一个很好的起点——老实说,其中大部分只是关注布局的组织和处理方式。大多数情况下,Android Studio 会警告您,但如果您正在使用片段和布局做一些大事,最好检查一下。 AS 0.8.9(目前是当前版本)中有一个错误,即使您的清单指定 API 15+,它也希望您使用不需要的 getSupportActionBar。 感谢您指出这是一个错误。我已经想知道如果您配置为使用 API 级别 > 10(在我的情况下为 16),为什么使用 SupportActionBar 应该是一个好习惯。 Android 编程有时很混乱。

以上是关于为啥 Android Studio 告诉我使用 getSupportActionBar() 而不是 getActionBar()?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Visual Studio 告诉我需要引用 System.Private.CoreLib?

为啥 Game Maker Studio 告诉我我的 if 语句不起作用?

Android Studio [JDBC]:为啥我无法访问数据库

颤振给我错误(不知道为啥)(使用颤振和Android Studio)

为啥构建 ANE 需要 Android Studio / Eclipse?

为啥我的 build.gradle android studio 中没有 allprojects?