Как изменить значок меню на сообщении Received - PullRequest
0 голосов
/ 08 октября 2018

Вот как я настроил свою панель инструментов (MainActivity).

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

Теперь я хочу изменить файл XML на main_notification_on при получении уведомления.Это то, чего я хочу достичь

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            if(there is no new notification)
             { 
                   getMenuInflater().inflate(R.menu.main, menu); }
            else{
                    getMenuInflater().inflate(R.menu.main_notification_on, menu);
                }
            return true;
        }

вот мой onMessageReceived из MyFirebaseMessagingService

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
     String title = remoteMessage.getData().get("title");
     String message = remoteMessage.getData().get("body");
     showNotifications(title, message);
}

Заранее спасибо.

1 Ответ

0 голосов
/ 08 октября 2018

Вы можете использовать нечто, называемое invalidateOptionsMenu () вместе с OnPrepareOptionsMenu ().Каждый раз, когда invalidateOptionsMenu () вызывается, в обратном вызове вызывается OnPrepareOptionsMenu (). Здесь вы можете внести изменения в свой макет меню.Код выглядит примерно так:

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
     String title = remoteMessage.getData().get("title");
     String message = remoteMessage.getData().get("body");
     showNotifications(title, message);

     //send a broadcast from here and catch it in MainActivity
}

Теперь в OnReceive () широковещательного приемника в MainActivity используйте invalidateOptionsMenu ():

@Override
OnReceive(){
invalidateOptionsMenu();
}

Переопределите метод OnPrepareOptionsMenu () в MainActivity иизменить макет там.Что-то на этих строках:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.main_notification_on, menu);
  return super.onPrepareOptionsMenu(menu);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...