XorOrNor
XorOrNor

Reputation: 8978

Fragment's menu multiplates itself on screen rotate

I have a fragment which has a menu with one item. The problem is on every screen orientation change this item is doubled. So there is 2 (the same) items after first screen change, 3 items after second change and so on...

public class ManageLinksFragment extends Fragment {



FragmentManager fragmentManager;
FragmentTransaction fragmentTransaction;



DBHttpLinks db;
long itemPosition;
SimpleCursorAdapter adapter;
ListView lv;
Listener mListener;



public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    setRetainInstance(true);
    setHasOptionsMenu(true);

    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.chooseonelinkfragment, container, false);

    lv = (ListView) v.findViewById(R.id.listView1);



    return v;
}




@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu_links, menu);
    super.onCreateOptionsMenu(menu,inflater);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.addlinks:

            fragmentManager = getFragmentManager();
            fragmentTransaction = fragmentManager.beginTransaction();

            // AddNewRecordFragment is a class name!
            AddHttpLinksFragment fragment2 = new AddHttpLinksFragment();
            fragmentTransaction.replace(R.id.fragment_left, fragment2, "addlinksF");
            fragmentTransaction.addToBackStack("chooselinksF");
            fragmentTransaction.commit();

            return true;


        default:
            return super.onOptionsItemSelected(item);
    }
}



@Override
public void onCreateContextMenu(ContextMenu menu, View v,
                                ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getActivity().getMenuInflater();
    inflater.inflate(R.menu.context_menu_manage_links, menu);
}

}

Upvotes: 1

Views: 259

Answers (1)

marcinj
marcinj

Reputation: 50016

Try moving :

setHasOptionsMenu(true);
setRetainInstance(true);

to your fragment onCreate,

also, make sure you are not adding your fragment in Activity.onCreate, even if it already exists.

Upvotes: 1

Related Questions