Получение сообщения об ошибке при вызове меню - PullRequest
0 голосов
/ 05 октября 2018

Я хотел бы получить представление меню, но я получаю эту ошибку:

Попытка вызвать виртуальный метод 'android.view.View android.view.View.findViewById (int)' onнулевая ссылка на объект

Любая помощь, пожалуйста ..

Активность :

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_action_bar, menu);
    View view2 = menu.findItem(R.id.cart_menu).getActionView();
    badge = (NotificationBadge)view2.findViewById(R.id.badge);
    cart_icon = (ImageView)view2.findViewById(R.id.cart_icon);

    cart_icon.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(HomeActivity.this, "Test", Toast.LENGTH_SHORT).show();
        }
    });

    myFunction();
    return true;
}

menu_action_bar.xml

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

<item
    android:id="@+id/cart_menu"
    android:icon="@drawable/ic_shopping_cart_black_24dp"
    android:title="Panier"
    app:showAsAction="always"
    android:actionLayout="@layout/action_bar_notification_icon" />

action_bar_notification.xml

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="@android:style/Widget.ActionButton">

<ImageView
    android:id="@+id/cart_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_shopping_cart_black_24dp"/>

<com.nex3z.notificationbadge.NotificationBadge
    android:id="@+id/badge"
    android:layout_width="28dp"
    android:layout_height="28dp"
    android:layout_toRightOf="@+id/cart_icon"
    android:layout_alignParentTop="@+id/cart_icon"
    android:layout_marginLeft="-10dp"
    android:layout_marginTop="-10dp"
    app:nbMaxTextLength="2"

    />

1 Ответ

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

Кажется, макет внутри onCreateOptionsMenu еще не надут.Итак, вам нужно накачать пользовательский вид внутри onPrepareOptionsMenu.Как то так:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.menu_action_bar, menu);

  return true;
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
  Menu menuChart = menu.findItem(R.id.cart_menu);
  FrameLayout rootView = (FrameLayout) menuChart.getActionView();

  mNbBadge = (NotificationBadge) rootView.findViewById(R.id.badge);
  mImvCartIcon = (ImageView) rootView.findViewById(R.id.cart_icon);

  // add the listener or anything related

  return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...