2016-09-22 13 views
0

私は、アクティビティのツールバーにあるメニュー項目を膨らませて、フラグメントのオプションを上書きしています。新しいメニュー項目は表示されません。ツールバーのメニューオプションがフレグムネットに表示されない

活動

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.encounter_tabacivity_menu, menu); 
    return true; 
} 

断片

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
    super.onPrepareOptionsMenu(menu); 
    menu.clear(); //remove all items 
    getActivity().getMenuInflater().inflate(R.menu.encounter_frag_problemlist_menu, menu); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    getActivity().invalidateOptionsMenu(); 
} 
@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setHasOptionsMenu(true); 
     view = inflater.inflate(R.layout.fragment_problem_list, container, false); 
     init(); 
     return view; 
    } 
+0

を次のようにactionbarとしてあなたtoolbarを宣言しますが、私の知る限りそう、onPrepareOptionsMenu'はonResume' '後に呼び出され、'、覚えています'onPrepareOptionsMenu'の間に' invalidateOptionsMenu'を呼び出すことによって、おそらく/おそらくそれを動作させることができます – Budius

答えて

0

あなたのフラグメントにsetHasOptionMenu(真)が必要です。

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
} 
0

あなたのフラグメントにこのコードを試してみてくださいフラグメント

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    // TODO Add your menu entries here 
    super.onCreateOptionsMenu(menu, inflater); 
} 
0

でこれをオーバーライドする必要があります。

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setHasOptionsMenu(true); 
} 


@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_record) { 
//   startActivity(new Intent(getActivity(),RecordingActivity.class)); 
      startActivity(new Intent(getActivity(),RecordingTestActivity.class)); 
      getActivity().finish(); 
      return true; 
     } 
     if (id == R.id.action_search) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 




@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     inflater.inflate(R.menu.recording, menu); 

     MenuItem searchItem = menu.findItem(R.id.action_search); 
     SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE); 
     if (searchItem != null) { 
      searchView = (SearchView) searchItem.getActionView(); 
     } 
     if (searchView != null) { 
      searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName())); 

      queryTextListener = new SearchView.OnQueryTextListener() { 
       @Override 
       public boolean onQueryTextChange(String newText) { 
        Log.i("onQueryTextChange", newText); 
        return true; 
       } 
       @Override 
       public boolean onQueryTextSubmit(String query) { 
        Log.i("onQueryTextSubmit", query); 
        return true; 
       } 
      }; 

      searchView.setOnQueryTextListener(queryTextListener); 
     } super.onCreateOptionsMenu(menu, inflater); 

    } 
1

あなたのactionbarとしてあなたtoolbarを設定していない可能性があります。あなたのactionbarであなたのメニューを表示するには、私はしばらくの間、これらのメニューのコールバックを使用していない

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 
+0

私はアクティビティでそれを初期化しました。@ indramurari – Dev

関連する問題