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 НЕ будет нулевым. Я озадачен...

0 ответов

Другие вопросы по тегам