У меня была та же проблема, но я думаю, что лучше подвести итог и представить последний шаг, чтобы она заработала:
Добавить метод setHasOptionsMenu (true) в ваш фрагмент onCreate(Bundle savedInstanceState)
метод.
Переопределите onCreateOptionsMenu(Menu menu, MenuInflater inflater)
(если вы хотите сделать что-то другое в меню вашего Фрагмента) и onOptionsItemSelected(MenuItem item)
методы в своем Фрагменте.
Внутри метода onOptionsItemSelected(MenuItem item)
Activity, убедитесь, что вы возвращаете false, когда действие пункта меню будет реализовано в методе onOptionsItemSelected(MenuItem item)
Fragment.
Пример:
Активность
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.activity_menu_item:
// Do Activity menu item stuff here
return true;
case R.id.fragment_menu_item:
// Not implemented here
return false;
default:
break;
}
return false;
}
Фрагмент
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
....
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Do something that differs the Activity's menu here
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.activity_menu_item:
// Not implemented here
return false;
case R.id.fragment_menu_item:
// Do Fragment menu item stuff here
return true;
default:
break;
}
return false;
}
If you're okay with spending money on a dead tree reference, The Rails Way is actually worth it. The guides posted are probably your best bet this time, but if you plan on doing a lot of Rails, this book really breaks it down and makes it understandable. It's been a tremendous help for me. Good Luck.
Первое упоминание в Google о «Руководстве по маршрутам Rails» - это Rails Routing from the Outside In , которое является довольно полным.
В качестве дополнительного примечания:
Маршруты в начале имеют приоритет над маршрутами позже в файле. Поэтому всякий раз, когда вы хотите указать какой-то общий маршрут (например, маршруты по умолчанию, отображающие каждое действие в каждом контроллере), вам нужно сделать это в конце.
http://guides.rubyonrails.org - фантастический справочник, и я нашел их руководство по маршрутизации чрезвычайно полезным!
Когда вы изучаете и экспериментируете с маршрутами rails, стоит отметить, что есть способ увидеть, что rails на самом деле делают с вашим файлом config / routes.rb
.
$rake routes
это вернет все маршруты, которые он настроил на основе вашего файла config / routes.rb
. Это было особенно полезно для меня, поскольку я узнал о том, как настраиваются все имена переменных маршрута, например new_model1_model2_path (@ model1)
.