Что использовать вместо getSupportActionBar() в библиотеке 22?

В моем коде есть строка, отмеченная желтым цветом:

getSupportActionBar().setDisplayShowHomeEnabled(true);

После установки appcompat-v7:22.1 отображается подсказка:

«Вызов метода может привести к исключению java.lang.nullpointerException».

Что следует использовать вместо getSupportActionBar()?


person Ardi    schedule 27.04.2015    source источник
comment
Сначала проверьте наличие нулей, чтобы избежать предупреждения.   -  person MLProgrammer-CiM    schedule 27.04.2015
comment
Убедитесь, что вы расширяете AppCompatActivity.   -  person Jared Burrows    schedule 27.04.2015


Ответы (4)


getSupportActionBar().setDisplayShowHomeEnabled(true);

Должен сказать

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

getSupportActionBar() может возвращать значение null, поэтому подсказка говорит вам об этом.

person apmartin1991    schedule 27.04.2015
comment
Спасибо, @apmartin1991 - person Ardi; 27.04.2015

Я нашел другой способ, используя AppCompatDelegate:

        getDelegate().getSupportActionBar().setDisplayHomeAsUpEnabled(true);
person Ardi    schedule 04.05.2015

Если вы расширяете Theme.AppCompat с панелью действий или сами вызывали setSupportActionBar(...), вызов getSupportActionBar() безопасен.

Чтобы обойти предупреждение, выполните нулевую проверку или

assert getSupportActionBar() != null;

который вызовет исключение, если выражение неверно. У обоих есть свое применение.

person Eugen Pechanec    schedule 27.04.2015

Используете NoActionBar в стилях? Подтвердите свою style.xml или свою тему, if("NoActionBar") => nullpointer =D

person Rurouni_X    schedule 30.06.2015