这是我设置工具栏(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
的{{1}}
MyFirebaseMessagingService
谢谢。
答案 0 :(得分:1)
您可以将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
}
现在MainActivity中广播接收器的OnReceive()中使用invalidateOptionsMenu():
@Override
OnReceive(){
invalidateOptionsMenu();
}
在MainActivity中重写OnPrepareOptionsMenu()方法,并在那里更改布局。这些行上的内容:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_notification_on, menu);
return super.onPrepareOptionsMenu(menu);
}