Уведомление в виде значка (kotlin): нулевая ссылка на объект - PullRequest
0 голосов
/ 27 декабря 2018

Я хочу показать некоторую ценность в моем ActionBar благодаря значку.Но когда я запускаю свое приложение, у меня появляется эта ошибка:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference

В этой строке:

notifCount = count.findViewById (R.id.notif_count)

Вот мой код:

main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    >

    <item
        android:id="@+id/badge"
        android:orderInCategory="100"
        android:title="@string/alertes"
        android:actionLayout="@layout/feed_update_count"
        app:showAsAction="always" />
</menu>

feed_update.xml

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/notif_count"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minWidth="32dp"
    android:minHeight="32dp"
    android:background="@drawable/red_circle"
    android:text="0"
    android:textSize="16sp"
    android:textColor="@android:color/white"
    android:gravity="center"
    android:padding="2dp"
    android:singleLine="true">
</Button>

main_activity.kt

 private lateinit var notifCount: Button
    var mNotifCount = 0

override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.main, menu)

        val count = menu.findItem(R.id.badge).actionView
        notifCount = count.findViewById(R.id.notif_count)
        notifCount.text = "1"
        return super.onCreateOptionsMenu(menu)

        //return true
    }

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Понял:

изменить

android: actionLayout = "@ layout / feed_update_count"

до

app: actionLayout = "@ layout / feed_update_count"

0 голосов
/ 27 декабря 2018

Количество должно быть

    val count = menu.findItem(R.id.badge)
    notifCount = count.findViewById(R.id.notif_count)
    notifCount.text = "1"
...