[英]Unable to set badge on action bar
我正在尝试将徽章计数放在操作栏中的购物车图标上,但应用程序崩溃并显示错误。
Fatal Exception: java.lang.NullPointerException
Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null
object reference.
此行显示错误:
TextView counter = view.findViewById(R.id.badgeCounter);
下面是我的代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.action_menu, menu);
menuItem = menu.findItem(R.id.cart_notif);
View view = menuItem.getActionView();
TextView counter = view.findViewById(R.id.badgeCounter);
ProductDb db = ProductDb.getInstance(MainActivity.this);
LiveData<Integer> s = db.productDao().no();
s.observe(this, new Observer<Integer>() {
@Override
public void onChanged(Integer integer) {
if(integer > 0){
counter.setText(String.valueOf(integer));
}
if(integer == 0){
counter.setVisibility(View.INVISIBLE);
}
}
});
return super.onCreateOptionsMenu(menu);
}
action_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:title=""
android:id="@+id/cart_notif"
android:icon="@drawable/ic_order"
app:showAsAction="always"
android:actionLayout="@layout/notification_badge"/>
</menu>
notification_badge.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="?attr/actionBarSize"
android:layout_height="?attr/actionBarSize">
<ImageView
android:layout_width="32dp"
android:layout_height="32dp"
android:src="@drawable/ic_order"
android:layout_gravity="center"/>
<TextView
android:layout_width="23dp"
android:layout_height="23dp"
android:id="@+id/badgeCounter"
android:background="@drawable/badge"
android:text="5"
android:gravity="center"
android:textColor="@color/white"
android:layout_gravity="center"
android:layout_marginStart="14dp"
android:layout_marginBottom="10dp"/>
</FrameLayout>
为什么会出现这个问题?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.