【问题标题】: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)));
  }
}

【问题讨论】:

    标签: android android-activity android-fragments android-studio


    【解决方案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 编程有时很混乱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多