item.getIcon() ВСЕГДА NULL
Я наткнулся на этот учебник об уведомлениях в приложении на панели действий.
http://www.jmhend.me/layerdrawable-menuitems
Все, что я получаю, это NullPointer внутри android.graphics.drawable.LayerDrawable при вызове item.getIcon() в строке, указанной в этом журнале: http://pastebin.com/udKPtUzB
Я думаю, что это может быть связано с версией Android API, но я не могу найти решение, так как не могу понять, что возвращает "ноль".
Я должен отметить, что это не происходит при запуске приложения. Это происходит только тогда, когда я пытаюсь обновить drawable, чтобы показать счетчик.
Я пришел, чтобы выяснить, это связано с item.getIcon()
который должен вернуть Drawable элемента меню. Но это всегда ноль во время выполнения. (но не при запуске)
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, menu);
menu.findItem(R.id.action_list).setIcon(
new IconDrawable(this, IconValue.fa_list).colorRes(
android.R.color.black).actionBarSize()
);
com.actionbarsherlock.view.MenuItem item = menu.findItem(R.id.action_users);
LayerDrawable icon;
if (item.getIcon() != null) {
icon = (LayerDrawable) item.getIcon();
// Update LayerDrawable's BadgeDrawable
setBadgeCount(MainActivity.this, icon, privateMsgNotificationCount);
} else {
}
return true;
}
NPE в if(item.getIcon()!=null)
сейчас. Условие никогда не проверяется, потому что getIcon () вызывает NPE, как в журнале pastebin, упомянутом выше.
ПРИМЕЧАНИЕ. После 12 часов тестирования все, что я могу с уверенностью сказать, это то, что всякий раз, когда я устанавливаю элемент MenuItem в качестве LayerDrawable, getIcon () становится нулевым. Если я установлю ICON () на ЛЮБОЙ ДРУГОЙ тип рисования, система запомнит рисование MenuItem и getIcon НЕ будет нулевым. Я озадачен...