Ответ 1
Убедитесь, что импорт из библиотеки совместимости, а не из самого SDK.
Я создал приложение, поддерживающее как версию телефона, так и планшет, поэтому я использую библиотеку 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
Убедитесь, что импорт из библиотеки совместимости, а не из самого SDK.
Хорошо, у меня была такая же проблема, хотя она не была исправлена тем, что здесь. Я использую библиотеку ActionBarSherlock, и получается, что onCreateOptionsMenu
хочет Menu
быть от android.support.v4.view.Menu
и MenuInflater
от android.view.MenuInflater
, а не android.support.v4.view.MenuInflater
. Не спрашивай меня, почему. Я не знаю, все ли это исправит, поэтому я расскажу, как я это понял:
Щелкните правой кнопкой мыши пустое место, где вы хотите, чтобы метод находился в Elcipse > Source > Overide/Implement methods...
Затем просто найдите его здесь, и Eclipse автоматически импортирует правильные вещи.
У меня была аналогичная проблема с использованием 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;
}
...
}
Была та же проблема, но это было потому, что я использовал неправильный метод 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
Ой!!! Это был хороший!
Я импортировал android.view.Menu в MyFragment вместо android.support.v4.Menu!
Я потерял несколько часов на этом! Надеюсь, что этот пост может хотя бы помочь кому-то другому.
Попробуйте это, на самом деле 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
}
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
// TODO Auto-generated method stub
getSupportMenuInflater().inflate(R.menu.main, menu);
return true;
}
Просто у вас была такая же проблема в действии на Xamarin. он ожидал, что метод примет Xamarin.ActionbarSherlockBinding.Views.IMenu как аргумент.
Как узнать: -Comment Метод OnCreateOptionsMenu Вы начали реализовывать. -В некоторых рабочих методах наберите OnCreateOptionsMenu, как вы хотите его назвать. -Выберите его из списка предложений. -Установите курсор на вызов OnCreateOptionsMenu. -press Command + d перейти к браузеру сборки. Вы увидите интерфейс от реализации. -Тогда, нажав указатель мыши на тип параметра, который требуется, вы перейдете к интерфейсу реализации этого типа. -Вы увидите пространство имён.
У меня была такая же проблема, и это я сделал, чтобы использовать 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);
}
i я использовал com.actionbarsherlock.view.Menu - возможно, он изменился с тех пор?