Подтвердить что ты не робот

Не удалось переопределить onCreateOptionsMenu в ListFragment

Я создал приложение, поддерживающее как версию телефона, так и планшет, поэтому я использую библиотеку android-support-v4.jar.

Моя активность расширяет ListFragment, и я попытался переопределить onCreateOptionsMenu (меню меню, надувной элемент MenuInflater), как в следующей ссылке: http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentMenuSupport.html

Я ранее называл setHasOptionsMenu.

К сожалению, кажется, что я не могу переопределить onCreateOptionsMenu().

Это сообщение об ошибке:

Метод onCreateOptionsMenu (меню меню, надувной элемент MenuInflater) тип MyFragment должен переопределять или реализовывать метод супертипа.

И я сделал это с помощью

Public class MyFragment extends ListFragment
4b9b3361

Ответ 1

Убедитесь, что импорт из библиотеки совместимости, а не из самого SDK.

Ответ 2

Хорошо, у меня была такая же проблема, хотя она не была исправлена ​​тем, что здесь. Я использую библиотеку ActionBarSherlock, и получается, что onCreateOptionsMenu хочет Menu быть от android.support.v4.view.Menu и MenuInflater от android.view.MenuInflater, а не android.support.v4.view.MenuInflater. Не спрашивай меня, почему. Я не знаю, все ли это исправит, поэтому я расскажу, как я это понял:

Щелкните правой кнопкой мыши пустое место, где вы хотите, чтобы метод находился в Elcipse > Source > Overide/Implement methods...

Затем просто найдите его здесь, и Eclipse автоматически импортирует правильные вещи.

Ответ 3

У меня была аналогичная проблема с использованием SherlockActionBar в моей деятельности. Вот моя настройка, которая устранила проблему:

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;

public class LoginActivity extends SherlockActivity {

...
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.activity_login, menu);
        return true;
    }

...


}

Ответ 4

Была та же проблема, но это было потому, что я использовал неправильный метод onCreateOptionsMenu в своем фрагменте!

boolean onCreateOptionsMenu (меню меню) предназначен только для действий.

@Override //For Activities
public boolean onCreateOptionsMenu(Menu menu) { 
...

Пришлось переместить его в класс активности, содержащий фрагмент.

Фрагмент имеет свои собственные: void onCreateOptionsMenu (меню меню, надувной элемент MenuInflater)

@Override //For Fragments.
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater){
...

Создание меню параметров: http://developer.android.com/guide/topics/ui/menus.html

Ответ 5

Ой!!! Это был хороший!

Я импортировал android.view.Menu в MyFragment вместо android.support.v4.Menu!

Я потерял несколько часов на этом! Надеюсь, что этот пост может хотя бы помочь кому-то другому.

Ответ 6

Попробуйте это, на самом деле IDE запутался в собственном импортировании импортированного меню и импортировании Шерлока..так, если мы четко укажем его, тогда он будет разрешен.

@Override
    public void onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu,
            com.actionbarsherlock.view.MenuInflater inflater) {

}

@Override
    public boolean onOptionsItemSelected(
            com.actionbarsherlock.view.MenuItem item) {
        // TODO Auto-generated method stub

}

Ответ 7

@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
    // TODO Auto-generated method stub
    getSupportMenuInflater().inflate(R.menu.main, menu);
    return true;
}

Ответ 8

Просто у вас была такая же проблема в действии на Xamarin. он ожидал, что метод примет Xamarin.ActionbarSherlockBinding.Views.IMenu как аргумент.

Как узнать: -Comment Метод OnCreateOptionsMenu Вы начали реализовывать. -В некоторых рабочих методах наберите OnCreateOptionsMenu, как вы хотите его назвать. -Выберите его из списка предложений. -Установите курсор на вызов OnCreateOptionsMenu. -press Command + d перейти к браузеру сборки. Вы увидите интерфейс от реализации. -Тогда, нажав указатель мыши на тип параметра, который требуется, вы перейдете к интерфейсу реализации этого типа. -Вы увидите пространство имён.

Ответ 9

У меня была такая же проблема, и это я сделал, чтобы использовать onCreateOptionsMenu of Fragment. Переопределите метод onCreate Fragment и убедитесь, что вы используете метод setHasOptionsMenu со значением параметра "true", чтобы система узнала, что Fragment будет использовать OptionsMenu.

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

Затем переопределите onCreateOptionsMenu, чтобы раздуть ваш XML файл меню (здесь, в этом примере, я раздул файл fragmenu.xml

@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
     inflater.inflate(R.menu.fragmentmenu, menu);
}

Ответ 10

i я использовал com.actionbarsherlock.view.Menu - возможно, он изменился с тех пор?