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

5

我在一个非常简单的测试应用程序中添加了一个非常简单的帮助活动(仅从资源文件显示一段HTML文本),在这个新式的Android Studio 0.8.6 beta中,我得到了以下警告,但没有提供任何理由/证明:

Should use getSupportActionBar instead of ActionBar name

有人知道为什么吗?

另外,是否有文档可用,因为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个回答

11

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

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

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

如需更多信息,请查看ActionBarActivity文档docs for ActionBarActivity,其中告诉您:

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


谢谢,除了新工具中出现的模糊警告之外,有没有关于使用支持类的官方说明?我问这个问题是因为droid网站上的文档和示例仍在使用原始类。 - arober11
@arober11 一个好的起点是,老实说,从dev.android的Support Library页面开始 - 大多数情况下,这只涉及布局的组织和处理方式。大多数情况下,Android Studio会警告你,但如果你正在使用片段和布局进行大规模操作,检查一下总是一个好主意。 - user1131435
3
AS 0.8.9(当前版本)存在一个错误,即使您的清单文件指定了API 15+,它也要求您使用不必要的getSupportActionBar。 - Martin Marconcini
谢谢指出这是一个错误。我已经想知道为什么在配置使用API级别> 10(在我的情况下为16)时,使用SupportActionBar应该是一个好的实践。 Android编程有时真的很混乱。 - John

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接