【问题标题】:What to use instead of getSupportActionBar() in Library 22?在 Library 22 中使用什么来代替 getSupportActionBar()?
【发布时间】:2023-03-30 04:32:01
【问题描述】:

我的代码中有一行标记为黄色:

getSupportActionBar().setDisplayShowHomeEnabled(true);

安装 appcompat-v7:22.1 后显示提示:

“方法调用可能产生java.lang.nullpointerexception”。

应该用什么来代替getSupportActionBar()

【问题讨论】:

  • 首先检查空值以避免警告。
  • 确保您正在扩展AppCompatActivity

标签: android toolbar appcompatactivity


【解决方案1】:
getSupportActionBar().setDisplayShowHomeEnabled(true);

应该说

if (getSupportActionBar() != null)
{
   getSupportActionBar().setDisplayShowHomeEnabled(true);
}

getSupportActionBar() 可以返回 null,所以你的提示告诉你这个。

【讨论】:

  • 谢谢,@apmartin1991
【解决方案2】:

我找到了另一种方法,使用 AppCompatDelegate

        getDelegate().getSupportActionBar().setDisplayHomeAsUpEnabled(true);

【讨论】:

    【解决方案3】:

    如果您要扩展具有操作栏的Theme.AppCompat 或自己调用了setSupportActionBar(...),则调用getSupportActionBar() 是安全的。

    要绕过警告,请执行 null 检查或

    assert getSupportActionBar() != null;
    

    如果表达式不正确,将抛出异常。两者各有千秋。

    【讨论】:

      【解决方案4】:

      在样式中使用NoActionBar?验证您的 style.xml 或您的主题,if("NoActionBar") => nullpointer =D

      【讨论】:

        猜你喜欢
        • 2020-05-15
        • 2011-10-02
        • 2011-10-12
        • 1970-01-01
        • 2018-11-24
        • 2011-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多