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); но это все равно не имеет значения.Невозможно установить меню для фрагмента

My layout xml layout.

<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', или поддержки версии их. Если вы хотите, чтобы меню отображалось на произвольной «Панели инструментов», вам придется поместить его туда сами. Ознакомьтесь с методами 'Toolbar # inflateMenu()' и 'Toolbar # setOnMenuItemClickListener()'. –

+1

@MikeM. да, это был тот, который вы могли бы написать так же, как ответ, поэтому я могу отметить его правильно. –

ответ

1

Стандартное меню опций работает только с ActionBar или поддержка его версии.

Если вы хотите, чтобы меню отображалось на произвольном Toolbar, вы можете просто положить его туда сами. Метод Toolbar#inflateMenu() может заменить инфумент меню, который вы в настоящее время имеете в onCreateOptionsMenu(), а метод Toolbar#setOnMenuItemClickListener() может установить слушателя для замены функции метода onOptionsItemSelected().

В качестве альтернативы, вы можете попробовать установить Toolbar в качестве поддержки, которую Activity «s 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 в вашем фрагменте, то вы можете сделать это следующим образом:

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

спасибо, но другой парень ответил на него первым, поэтому я должен был отметить его как правильный ответ, но это именно то, что нужно сделать. –