如何在android中向actionbars发出警报

如何在android中向actionbars发出警报,android,android-studio,Android,Android Studio,我在我的动作栏里有一个通知菜单,当我收到新的通知时,我想提醒它,如何向动作栏发出警告 我要在三点按钮上显示警报 在通知按钮中 您必须在工具栏上放置一个通知图标,以便轻松显示。 试试这个: public boolean onCreateOptionsMenu(Menu menu) { //inflate menu getMenuInflater().inflate(R.menu.menu_my, menu); // Get the notifications Menu

我在我的动作栏里有一个通知菜单,当我收到新的通知时,我想提醒它,如何向动作栏发出警告

我要在三点按钮上显示警报

在通知按钮中

您必须在工具栏上放置一个通知图标,以便轻松显示。 试试这个:

 public boolean onCreateOptionsMenu(Menu menu) {
    //inflate menu
    getMenuInflater().inflate(R.menu.menu_my, menu);

    // Get the notifications MenuItem and LayerDrawable (layer-list)
    MenuItem item = menu.findItem(R.id.action_notifications);
    LayerDrawable icon = (LayerDrawable) item.getIcon();

    // Update LayerDrawable's BadgeDrawable
    Utils2.setBadgeCount(this, icon, 2);

    return true;
}
菜单\u my.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/action_notifications"
        android:icon="@drawable/ic_menu_notifications"
        android:title="Notifications"
        app:showAsAction="always" />
</menu>
这个类有助于设置数字

public class Utils2 {
    public static void setBadgeCount(Context context, LayerDrawable icon, int count) {

        BadgeDrawable badge;

        // Reuse drawable if possible
        Drawable reuse = icon.findDrawableByLayerId(R.id.ic_badge);
        if (reuse != null && reuse instanceof BadgeDrawable) {
            badge = (BadgeDrawable) reuse;
        } else {
            badge = new BadgeDrawable(context);
        }

        badge.setCount(count);
        icon.mutate();
        icon.setDrawableByLayerId(R.id.ic_badge, badge);
    }


}

好吧,看来我理解代码是如何工作的,但最重要的是,这真的需要吗?那是干什么用的?我应该在res/drawable中将其命名为什么?还有drawable/ice_skate那是什么图像?你可以跳过它。我正在使用一个asyncronus调用,使用Reformation 2获取通知数,我可以使用Utils2.setBadgeCount(这个,图标,2);在调用intead-inside-onCreateOptionMenu的内部,或者我需要放置Utils2.setBadgeCount(这个图标为2);onCreateOptionMenu内的内部改装调用?将其设置在您获得价值的位置。您不能在空对象上设置它。如果它有效,我将通过单击复选标记要求您不要忘记接受它(✔️) 在投票箭头的左边。应该换成绿色。我会很感激的。谢谢!
public class Utils2 {
    public static void setBadgeCount(Context context, LayerDrawable icon, int count) {

        BadgeDrawable badge;

        // Reuse drawable if possible
        Drawable reuse = icon.findDrawableByLayerId(R.id.ic_badge);
        if (reuse != null && reuse instanceof BadgeDrawable) {
            badge = (BadgeDrawable) reuse;
        } else {
            badge = new BadgeDrawable(context);
        }

        badge.setCount(count);
        icon.mutate();
        icon.setDrawableByLayerId(R.id.ic_badge, badge);
    }


}