Reputation: 87
I am trying to open popup menu when pressing one of the elements of the Dialog Fragment, but onOptionsItemSelected method is never called, even when pressing one of the menu items. What should I do to fix it?
public class AddSongDialogFragment extends DialogFragment implements View.OnClickListener {
private TextView genreTextview;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.addsong_layout, container);
//...
genreTextview = (TextView) view.findViewById(R.id.genreTextView);
view.findViewById(R.id.ll_genre_menu).setOnClickListener(this);
genreTextview.setText(R.string.press_to_choose_genre);
return view;
}
//...
public void onClick(View v){
switch(v.getId()) {
case R.id.button2:
dismiss();
mListener.onChoose();
break;
case R.id.ll_genre_menu:
PopupMenu popup = new PopupMenu(getContext(), v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.song_genres, popup.getMenu());
popup.show();
break;
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
genreTextview.setText(item.getTitle());
Log.d("songo", "item selected");
return true;
}
song_genres.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/pop"
android:title="@string/pop"/>
<item android:id="@+id/rock"
android:title="@string/rock" />
...
</menu>
Upvotes: 1
Views: 648
Reputation: 1774
You should set setOnMenuItemClickListener(PopupMenu.OnMenuItemClickListener listener)
for popup
It will be like below
popup.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Log.d("songo", "item selected");
return false;
}
});
Upvotes: 3