2
Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
    Log.i("frag", "onCreate"); 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    setHasOptionsMenu(true); 
    final View view = inflater.inflate(R.layout.fragment_initiate_chat, container, false); 

    bindViews(view); 

    setUpClickListener(); 

    setUpCategories(view); 

    return view; 
} 

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    //menu.clear(); 
    inflater.inflate(R.menu.menu_inititate_chat, menu); 
    Log.i("frag", "onCreateOptionsMenu"); 
    //super.onCreateOptionsMenu(menu, inflater); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    Log.i("frag", "onOptionsItemSelected"); 
    final int itemId = item.getItemId(); 
    switch (itemId) { 
     case R.id.send: 
      sendIssue(); 
      break; 

    } 
    return super.onOptionsItemSelected(item); 
} 

我無法爲我的片段設置菜單。我使用了setHasOptionsMenu(true);但它仍然沒有區別。無法設置片段菜單

我的片段xml佈局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/bgGrey" 
android:orientation="vertical"> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@color/colorPrimary" 
    android:minHeight="?attr/actionBarSize" 
    app:navigationIcon="@drawable/ic_close_black_24dp" 
    app:popupTheme="@style/Theme.AppCompat.NoActionBar" 
    app:titleTextColor="@color/toolbarTextColor" /> 

<Spinner 
    android:id="@+id/categories" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 


    </LinearLayout>` 

菜單項menu_inititate_chat.xml

`<?xml version="1.0" encoding="utf-8"?> 
    <menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
    android:id="@+id/send" 
    android:orderInCategory="100" 
    android:title="@string/send" 
    android:icon="@drawable/send" 
    app:showAsAction="always" /> 
    </menu>` 

包含該片段的活動不包括它自己的工具欄。

+1

的標準選項菜單僅適用於一個'ActionBar'或其支持的版本。如果你想要一個菜單​​顯示在任意的「工具欄」上,你必須自己把它放在那裏。看看'工具欄#inflateMenu()'和'工具欄#setOnMenuItemClickListener()'方法。 –

+1

@MikeM。是的唯一的,你能寫同樣的答案,所以我可以標記它是正確的。 –

回答

1

標準選項菜單隻能用ActionBar工作,或其支持的版本。

如果你想要一個菜單​​顯示在任意Toolbar,你可以把它放在那裏自己。 Toolbar#inflateMenu()方法可以代替onCreateOptionsMenu()中當前擁有的菜單增加,並且Toolbar#setOnMenuItemClickListener()方法可以設置偵聽器來替換方法的功能。

或者,你可以嘗試設置ToolbarActivity的支持ActionBar,如果您的設計允許,並與標準的選項菜單設置堅持,雖然還有點兒笨拙,而且可能有點容易出錯。

0

使用此。

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    // TODO Auto-generated method stub 

    inflater = getActivity().getMenuInflater(); 

    inflater.inflate(R.menu.menu_inititate_chat, menu); 


} 
+0

nope,沒有工作 –

0

試圖改變自己的onOptionsItemSelected這樣的:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
Log.i("frag", "onOptionsItemSelected"); 
final int itemId = item.getItemId(); 
switch (itemId) { 
    case R.id.send: 
     sendIssue(); 
     return true; 
    default: 
return super.onOptionsItemSelected(item); 
} 
2

,如果你在你的片段並使用工具,那麼你可以這樣來做:

toolBar.inflateMenu(R.menu.delete_address_menu); 
toolBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { 
     @Override 
     public boolean onMenuItemClick(MenuItem item) { 
      return false; 
     } 
    }); 
+0

謝謝,但另一個人先回答它,所以我不得不標記他是正確的答案,但這正是需要做的。 –