Reputation: 5011
I have a simple layout with one main Activity
, a ViewPager
and a BottomNavigationView
with 4 buttons. Tapping on each button simply changes the current item on the ViewPager, which loads the correct Fragment
.
Each fragment has their own android.support.v7.widget.Toolbar
, and my goal is for each one to show different menu items on the Toolbar. I've tried several approaches but haven't been able to make any menu items show up in the Toolbar. This is my code:
Fragment.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_category, container, false);
Toolbar toolbar = (Toolbar) view.findViewById(R.id.main_toolbar);
toolbar.setTitle("Fragment title");
AppCompatActivity activity = (AppCompatActivity) getActivity();
activity.setSupportActionBar(toolbar);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_add"
android:enabled="true"
android:visible="true"
android:icon="@drawable/ic_add"
android:title="Add"
app:showAsAction="always" />
</menu>
The Activity itself has no menu-related code. Any ideas what I'm missing?
Upvotes: 1
Views: 4279
Reputation: 3339
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_category, container, false);
Toolbar toolbar = (Toolbar) getactivity().findViewById(R.id.main_toolbar);
((ActionBarActivity)getActivity()).setSupportActionBar(mToolbar);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
Upvotes: 1
Reputation: 7196
try adding the lines
AppCompatActivity activity = (AppCompatActivity) getActivity();
activity.setSupportActionBar(toolbar);
in the fragment's onActivityCreated
Upvotes: 0