- This will cover the followings:
- Use Options Menu / Actionbar menu
- Use Options Menu in fragments
- Add items with icons in options menu
- Show different options of an options menu in each fragment
- Handle options menu’s item clicks
Step 1: Create a new project OR Open your project
Step 2: Code:
menu_main.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_settings"
android:title="Settings"/>
<item android:id="@+id/action_sort"
android:title="Sort"
app:showAsAction="always"
android:icon="@drawable/ic_sort_white"/>
</menu>
FragmentOne.java
package com.jigopost.myapplication;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
/**
* A simple {@link Fragment} subclass.
*/
public class FragmentOne extends Fragment {
public FragmentOne() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_fragment_one, container, false);
}
/*Enable options menu in this fragment*/
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//inflate menu
inflater.inflate(R.menu.menu_main, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//handle menu item clicks
int id = item.getItemId();
if (id == R.id.action_settings) {
//do your function here
Toast.makeText(getActivity(), "Settings", Toast.LENGTH_SHORT).show();
}
if (id == R.id.action_sort) {
//do your function here
Toast.makeText(getActivity(), "Sort", Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}
}
FragmentTwo.java
package com.jigopost.myapplication;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
/**
* A simple {@link Fragment} subclass.
*/
public class FragmentTwo extends Fragment {
public FragmentTwo() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_fragment_two, container, false);
}
/*Enable options menu in this fragment*/
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//inflate menu
inflater.inflate(R.menu.menu_main, menu);
//hide item (sort)
menu.findItem(R.id.action_sort).setVisible(false);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//handle menu item clicks
int id = item.getItemId();
if (id == R.id.action_settings) {
//do your function here
Toast.makeText(getActivity(), "Settings", Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}
}
FragmentThree.java
package com.jigopost.myapplication;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* A simple {@link Fragment} subclass.
*/
public class FragmentThree extends Fragment {
public FragmentThree() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_fragment_three, container, false);
}
}
Step 3: Run Project
Output