Метод getMenuInflater() не определен при создании контекстного меню Android

Я пытаюсь создать элемент контекстного меню внутри фрагмента. Но у меня возникла проблема с методом getMenuInflater(). Это не определено. Я импортировал все необходимые пакеты. Может ли кто-нибудь указать, что я делаю неправильно здесь?

Вот мой код:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.view.MenuItem;

public class FeaturedFragment extends Fragment {
    public FeaturedFragment() {
    }
    public static final String ARG_SECTION_NUMBER = "section_number";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.featured_fragment,container,false);
        registerForContextMenu(view);
        return view;
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
    {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.toggleview_menu, menu);
    }
}

вот мое меню.xml

  <menu xmlns:android="http://schemas.android.com/apk/res/android" >    
      <item android:id="@+id/toggle_view"
         android:title="Change to ListView"
         android:icon="@drawable/collections_view_as_grid"
         android:showAsAction="always" />
      <item android:id="@+id/grid_view"
         android:title="Grid View"
         android:orderInCategory="99"
         android:showAsAction="never" />
      <item android:id="@+id/list_view"
         android:title="List View"
         android:orderInCategory="99"
         android:showAsAction="never" />
  </menu>

person intrepidkarthi    schedule 14.09.2012    source источник


Ответы (1)


Сдача:

MenuInflater inflater = getMenuInflater();

К этому:

MenuInflater inflater = getActivity().getMenuInflater();
person waqaslam    schedule 14.09.2012
comment
Спасибо. Оно работает. Но мой пункт меню не отображается в представлении. Я отредактировал свой пост с XML-файлом меню. - person intrepidkarthi; 14.09.2012
comment
Разве вы не должны использовать getMenuInflator() внутри onCreateOptionsMenu внутри Activity? - person waqaslam; 14.09.2012
comment
Руководство разработчика (developer.android.com/guide/topics/ui/) говорит, что мы можем иметь его либо внутри действия, либо во фрагменте. - person intrepidkarthi; 14.09.2012
comment
Внутри фрагмента onCreateOptionMenu передает в качестве второго параметра MenuInflater. Дан ответ в порядке. Но, если в параметрах предусмотрен инфлятор, я бы выбрал его, личное предпочтение. - person Les; 12.06.2014
comment
@Les - Но это внутри onCreateContextMenu, а не onCreateOptionsMenu. Нет аргумента MenuInflater. - person Ted Hopp; 30.09.2016