как сделать, чтобы onCreateOptionMenu работал как onResume - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть меню сообщений в панели действий, и оно отображается только в меню «Активность меню», и в нем будет номер предупреждения для каждого сообщения, которое еще не было прочитано, но каждый раз, когда я читаю свое сообщение, номер не изменится, если только я закрываю приложение и открываю его снова, как сделать так, чтобы оно могло изменить номер после того, как я прочитал сообщение? Я использую кнопку «Назад», чтобы открыть меню «Активность» после открытия сообщения. Вместо этого я открываю новое меню «Активность», используя намерение

. Вот мой код, чтобы изменить предупреждение панели действий

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.actionbars, menu);
        if (mPrefs.getUserType().equalsIgnoreCase("dosen")){
            menu.findItem( R.id.chgpassword ).setVisible( false );
            menu.findItem( R.id.exit ).setVisible( false );
        } else {

            requestNotif(new ApiCallback(){
                @Override
                public void onSuccess(Integer result){
                    //do stuff here with the list from the request

                    newNotif = result;
                    MenuItem item = menu.findItem(R.id.notif);
                    LayerDrawable icon = (LayerDrawable) item.getIcon();
                    Utils2.setBadgeCount(mContext, icon, newNotif);
                }
            });

        }
        return true;
    }

1 Ответ

0 голосов
/ 03 апреля 2020

Вы можете позвонить,

invalidateOptionsMenu();

в вашем Activity. Это вынуждает воссоздать меню, и когда оно воссоздается, вызывается метод onPrepareOptionsMenu,

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem item = menu.findItem( R.id.notif );
   // Update the item here onwards
}

См. this и this answer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...