2017-05-17 13 views
1

ダイアログフラグメントの要素の1つを押すときにポップアップメニューを開こうとしていますが、メニュー項目の1つを押してもonOptionsItemSelectedメソッドが呼び出されません。それを修正するために私は何をすべきですか?onOptionsItemSelectedがPopupMenuで呼び出されない

enter image description hereenter image description here

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> 

答えて

2

あなたはそれが

以下のようになります popup

ためsetOnMenuItemClickListener(PopupMenu.OnMenuItemClickListener listener)を設定する必要があります

関連する問題