Note that there are some explanatory texts on larger screens.

plurals
  1. POOnCreateOptionsMenu() not called in Fragment
    primarykey
    data
    text
    <p><br> I have an app which got one activity with 2 fragments placed horizontally. <br> In my activity I inflated menu using onCreateOptionsMEnu() using which I am able to display actionbar options menu. But when I try to update the action bar menu items from one of my fragment , the onCreateoptionsmenu() is not called.So,I'm not able to update the action bar options menu. Can anyone help me in sorting out this issue. <br> The code in my activity is as below: <br> myActivity.java <br> ===============</p> <pre><code>package com.andr.androidtablelist; import java.io.IOException; import android.app.ActionBar; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Toast; import com.andr.fragments.ListLeftFragment; import com.andr.utils.DBHelper; public class TabletActivity extends Activity { ActionBar actionBar = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); DBHelper dbhelper; dbhelper = new DBHelper(this); try { dbhelper.createDatabase(); } catch (IOException ex) { ex.printStackTrace(); } setContentView(R.layout.activity_tablet); actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(false); getFragmentManager().beginTransaction() .replace(R.id.master, ListLeftFragment.newInstance()).commit(); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.tablet, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Toast.makeText( getApplicationContext(), "Back Stack Count::" + getFragmentManager().getBackStackEntryCount(), Toast.LENGTH_LONG).show(); if (getFragmentManager().getBackStackEntryCount() == 1) { actionBar.setDisplayHomeAsUpEnabled(false); } if (getFragmentManager().getBackStackEntryCount() &gt; 1) { getFragmentManager().popBackStack(); } return true; } return super.onOptionsItemSelected(item); } } // http://www.vogella.com/articles/AndroidListView/article.html &lt;br&gt; myFragment.java =============== package com.andr.fragments; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.app.Fragment; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.SearchView; import android.widget.TextView; import com.andr.androidtablelist.R; import com.andr.helper.LazyHelper; public class ListLeftFragment extends Fragment{ private static ListLeftFragment listFragment = null; public static ListLeftFragment newInstance(){ listFragment = new ListLeftFragment(); return listFragment; } @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_listlayout, container,false); getActivity().invalidateOptionsMenu(); ListView lv = (ListView)v.findViewById(R.id.lview); String[] values = new String[] { "Android", "iPhone", "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Android", "iPhone", "WindowsMobile" }; getActivity().getActionBar().setTitle("LeftList"); ArrayList&lt;String&gt; list = new ArrayList&lt;String&gt;(); LazyHelper lHelper = new LazyHelper(getActivity()); list = lHelper.getLazyDetials(); /* for (int i = 0; i &lt; values.length; ++i) { list.add(values[i]); } final StableArrayAdapter adapter = new StableArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, list);*/ LeftListAdapter lAdapter = new LeftListAdapter(getActivity(),list); lv.setAdapter(lAdapter); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView&lt;?&gt; arg0, View arg1, int pos, long arg3) { final String clickedData = (String)arg0.getItemAtPosition(pos); Bundle bundle = new Bundle(); bundle.putString("clickedItemName", clickedData); Fragment detailFragment = DetailFormRightFragment.newInstance(); detailFragment.setArguments(bundle); getActivity().getFragmentManager().beginTransaction().replace(R.id.details, detailFragment).addToBackStack(null).commit(); } } ); return v; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); getActivity().getMenuInflater().inflate(R.menu.search, menu); SearchView searchView=(SearchView)menu.findItem(R.id.search); searchView.setIconifiedByDefault(true); } @Override public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); return false; } @Override public void onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); /*MenuItem item; menu.clear(); getActivity().getMenuInflater().inflate(R.menu.search, menu); SearchView searchView=(SearchView)menu.findItem(R.id.search); searchView.setIconifiedByDefault(true);*/ } private class StableArrayAdapter extends ArrayAdapter&lt;String&gt; { HashMap&lt;String, Integer&gt; mIdMap = new HashMap&lt;String, Integer&gt;(); public StableArrayAdapter(Context context, int textViewResourceId, List&lt;String&gt; objects) { super(context, textViewResourceId, objects); for (int i = 0; i &lt; objects.size(); ++i) { mIdMap.put(objects.get(i), i); } } @Override public long getItemId(int position) { String item = getItem(position); return mIdMap.get(item); } @Override public boolean hasStableIds() { return true; } } private class LeftListAdapter extends BaseAdapter implements OnClickListener { private Context mcontext; ArrayList&lt;String&gt; listData; private LayoutInflater inflater=null; public LeftListAdapter(Context context, ArrayList&lt;String&gt; listItems) { mcontext=context; listData=listItems; inflater = (LayoutInflater)mcontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return listData.size(); } @Override public Object getItem(int arg0) { return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View view, ViewGroup arg2) { // create a ViewHolder reference View vi=view; if(vi==null){ vi = inflater.inflate(R.layout.item, null); } TextView text=(TextView)vi.findViewById(R.id.text); text.setText(listData.get(position)); vi.setOnClickListener(this); return vi; } @Override public void onClick(View vi) { TextView text=(TextView)vi.findViewById(R.id.text); Bundle bundle = new Bundle(); bundle.putString("clickedItemName", text.getText().toString()); Fragment detailFragment = DetailFormRightFragment.newInstance(); detailFragment.setArguments(bundle); getActivity().getFragmentManager().beginTransaction().replace(R.id.details, detailFragment).addToBackStack(null).commit(); } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload