Подтвердить что ты не робот

GetActionBar() возвращает Null (AppCompat-v7 21)

Мое приложение рушится в ту минуту, когда я запускаю его после того, как я изменил свой AppCompat-v7 на 21.0.0 и скомпилировал без проблем.

Это дает мне ошибку:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setIcon(int)' on a null object reference

в этой строке:

getActionBar().setIcon(R.drawable.ic_action_bar);

Он работает с AppCompat-v7 20.0.0, но не с 21.0.0.

4b9b3361

Ответ 1

Вам нужно позвонить getSupportActionBar() в ActionBarActivity. Не вызывайте getActionBar(), который недоступен на старых устройствах, а для новой версии r21 appcompat-v7 я ожидаю, что он будет возвращать null все время, так как новый ActionBarActivity отключает и заменяет панель действий системы.

Ответ 2

Если ваша деятельность - AppCompatActivity, вы можете получить панель действий следующим образом:

android.support.v7.app.ActionBar mActionBar = getSupportActionBar();

Ответ 3

Object actionBar = getSupportActionBar();

android.support.v7.internal.app.WindowDecorActionBar bar = (android.support.v7.internal.app.WindowDecorActionBar) actionBar;

Если вы разрабатываете таргетинг на приложения 21SDK, но приложение будет использоваться под старым sdk, тогда эти строки выше будут решением.

Вы не можете использовать getActionBar() под 21SDK, когда ваша активность расширяет ActionBarActivity

Ответ 4

Замените ActionBar на android.support.v7.app.ActionBar во всех ваших кодах. и используйте setSupportActionBar() также Расширьте свою активность из AppCompatActivity. используйте поддержку android поддержки v7.