2015-08-27 6 views
0

Я пытаюсь реализовать this library с фрагментом. Для завершения этой реализации я должен переопределить этот menthodpublic boolean OnCreateOptionMenu in Fragment

@Override 
public boolean onCreateOptionsMenu(final Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_main, menu); 
    return true; 
} 

Но когда я пытаюсь переопределить этот метод, он дает ошибку «Метод не отменяет метод из суперкласса».

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

Мой код выглядит следующим образом

public class Fragment_Dashboard_Trains extends Fragment implements OnClickListener,OnMenuItemClickListener {@Override 
public void onMenuItemClick(View clickedView, int position) { 
    Toast.makeText(getActivity(), "Clicked on position: " + position, Toast.LENGTH_SHORT).show(); 
}@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
} 

Я работаю с support.v4.app.fragment

+0

Опубликовать код фрагмента. –

+0

Какой класс вы распространяете и какие у вас связаны с импортом? – Zarwan

ответ

0

Добавить setHasOptionsMenu(true); в методе OnCreate

Как:

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

Я добавил этот код к моему фрагменту. – swappy

+0

фрагмент не имеет метода onCreateOptionsMenu (меню), либо это conatins onCreateOptionsMenu (меню меню, MenuInflater inflater), поэтому, пожалуйста, используйте это – theLazyFinder

+0

. Да, я заметил, что фрагмент не имеет onCreateOptionsMenu (меню), но не существует способа реализовать эту библиотеку с фрагментами – swappy

0

По до the docs подпись метода, который вы пытаетесь ИНГ переопределения:

public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) 

нет:

public void onCreateOptionsMenu (Menu menu) 

Попробуйте заменить реализацию с:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.menu_main, menu); 
    return; 
} 
+0

, теперь она показывает «попытка использовать несовместимый тип возврата» – swappy

+0

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

+0

@swappy Я просмотрел ссылку и вообще не видел реализацию этого метода. Кроме того, класс в вашей ссылке расширяет «DialogFragment», который имеет подпись 'public void onCreateOptionsMenu (меню меню, надувной элемент MenuInflater), как я упоминал в ответе (и также разместил ссылку на него): http: // developer. android.com/reference/android/app/Fragment.html#onCreateOptionsMenu(android.view.Menu,%20android.view.MenuInflater) – alfasin

0

Я нашел решение. Мне просто нужно реализовать этот метод в своей базовой деятельности

@Override 
public boolean onCreateOptionsMenu(final Menu menu) { 
    return true; 
} 

и событиями контекстного меню можно обрабатывать фрагменты.

+1

вы можете сделать это более эффективным способом. используйте sethasmenu() для вашего фрагмента oncreate, и вы можете создать меню для каждого фрагмента –