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
  • 3,072
  • 3
  • 21
  • 39
TheCoderGuy
  • 771
  • 6
  • 24
  • 51

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,637
  • 3
  • 41
  • 78
  • Where should I define this, I mean in which column of the code. – TheCoderGuy Nov 26 '18 at 10:52
  • It is coming the error `setOnMenuItemClickListener (android.widget.PopupMenu.OnMenuItemClickListener) in PopupMenu cannot be applied to (Searchwith.SmartBrowser.MainActivity)` – TheCoderGuy Nov 26 '18 at 10:58
  • @Spritzig make sure your activity is implementing `implements PopupMenu.OnMenuItemClickListener` – karan Nov 26 '18 at 11:08
  • It is not working I have made a log.d and normal text but it is not showing me nothing in logcat and nothing else – TheCoderGuy Nov 26 '18 at 11:13
  • Do you know how for example when click night mode to change the background color of the activity ? – TheCoderGuy Nov 26 '18 at 11:28
  • https://stackoverflow.com/questions/8961071/android-changing-background-color-of-the-activity-main-view – karan Nov 26 '18 at 11:29