0

I have an xml with menu items which are settings, and I have a button which opens the OptionsMenu and that it is working, but when I select something in the OptionsMenu that it is not called anymore

This is my code.
MainActivity

private PopupMenu mPopupMenu;
ImageButton settings =  findViewById(R.id.buttonSettings);


mPopupMenu = new PopupMenu(this, settings);
        MenuInflater menuInflater = mPopupMenu.getMenuInflater();
        menuInflater.inflate(R.menu.main_settings, mPopupMenu.getMenu());
        settings.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mPopupMenu.show();
            }
        });


 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_settings, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if(id == R.id.menuNightMode) {
            openDialog();
            return true;
        }
        return super.onOptionsItemSelected(item);

    }

  public void openDialog() {
        DialogNightMode dialogNightMode = new DialogNightMode();
        dialogNightMode.show(getSupportFragmentManager(), "test");
    }

This is the Xml

   <ImageButton
        android:id="@+id/buttonSettings"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="17dp"
        android:background="@color/transparent"
        android:tint="@color/gray"
        android:src="@drawable/ic_settings_black_24dp" />

Xml of menu

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">    
    <item android:id="@+id/menuNightMode" android:title="@string/MainPageMenuNight" />
</menu>
Aniruddh Parihar
  • 2,674
  • 2
  • 19
  • 34
Abedin.Zhuniqi
  • 855
  • 5
  • 20
  • 41

1 Answers1

1

Your code is missing MenuItemClickListener you need to set it to your PopupMenu.

set it like below

popup.show();

//Set on click listener for the menu
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
   @Override
   public boolean onMenuItemClick(MenuItem item) {
        if(id == R.id.menuNightMode) {
              openDialog();
        }
        return false;
   }
});
karan
  • 8,812
  • 3
  • 41
  • 76