2016-08-17 2 views
0

Панель инструментов появляется, но нет элементов меню. Если я переведу код в действие, вызывается корреспондент onCreateOptionsMenu. Если я вернусь к панели действий, версия фрагмента работает нормально.Использование панели поддержки Android с фрагментами, не вызывающими onCreateOptionsMenu

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.imd_toolbar); 
    ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar); 
    setHasOptionsMenu(true); 

} 

из-за этого и более сложный жизненный цикл, я имею в виду пойти фрагмент свободной (n00b здесь кстати), плюс я не планирую делать таблетки специальный макет. Тем не менее, мне кажется, что этого не случилось с кем-то еще, пожалуйста, дайте мне знать, если это известно или просто проблема от меня.

Спасибо!

+0

У вас есть элементы, добавленные в ваше меню xml ?? – Moulesh

+0

Почему вы используете getActivity() в панели инструментов панели инструментов (панель инструментов) getActivity(). FindViewById (R.id.imd_toolbar) ;? –

+0

Как вы добавляете элементы в свое меню? –

ответ

0

Я выяснил, проблема.

Изменить эту строку:

Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.imd_toolbar); 

Чтобы что-то вроде этого:

Toolbar toolbar = (Toolbar) rootView.findViewById(R.id.imd_toolbar); 

Пример:

Toolbar toolbar; 
private View rootView; 


rootView = inflater.inflate(R.layout.fragment_top_rated, container, false); 
toolbar = (Toolbar) rootView.findViewById(R.id.tool_bar1); 

Причина этой проблемы я считаю, что getActivity() в фрагмент возвращается в настоящее время связан фрагмент действия, а не v iew.

+0

Спасибо! вот и все, такая пустота. – Leonardo

+0

Без проблем. !!!! –

0

Создать свой menu файл что-то, как показано ниже:

sample_menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:id="@+id/menu_sms_ticket" 
    android:title="@string/menu_sms_ticket" 
    android:visible="false"/> 
</menu> 

В вашей activity добавить этот menu файл и изменить код для добавления toolbar, сделать это внутри activity. В вашем fragment, вызовите setHasOptionMenu(true) и переопределить ниже функции что-то вроде этого:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    menu.getItem(0).setVisible(true); 
} 

Пожалуйста, попробуйте это, дайте мне знать, если это то, что вы хотели.

+0

Спасибо за ответ. На самом деле это не то, чего я хотел.Я хочу знать, как заставить его работать с фрагментом без активности, зная, какую панель инструментов я использую. Этот обходной способ настройки панели инструментов в действии (мне не нужно скрывать его и показывать, просто нужен метод, который вызывается), я попробую, если не смогу заставить его работать непосредственно в фрагменте. И, может быть, я просто избавлюсь от фрагмента. – Leonardo

+0

Настройка «панели инструментов» в действии не является обходной, это обычным способом. И вы скрываете «пункт меню» в 'activity' и показываете его в определенном« фрагменте », где хотите. Использование фрагмента имеет смысл, если у вас есть аналогичное поведение родительского макета, и вы хотите обновить его часть несколько раз. Во всяком случае, ваш звонок. – himanshu1496

+0

Я вижу хорошо, спасибо за вашу помощь, я все еще изучаю андроид, и, возможно, в конечном итоге это будет реализовано. Если я буду работать для меня, я вернусь и приму этот ответ. – Leonardo

 Смежные вопросы

  • Нет связанных вопросов^_^