{"id":2302,"date":"2022-08-30T15:23:44","date_gmt":"2022-08-30T15:23:44","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2014\/01\/05\/crash-after-adding-item-to-action-bars-options-menu-from-fragment-followed-by-orientation-change-collection-of-common-programming-errors\/"},"modified":"2022-08-30T15:23:44","modified_gmt":"2022-08-30T15:23:44","slug":"crash-after-adding-item-to-action-bars-options-menu-from-fragment-followed-by-orientation-change-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2022\/08\/30\/crash-after-adding-item-to-action-bars-options-menu-from-fragment-followed-by-orientation-change-collection-of-common-programming-errors\/","title":{"rendered":"Crash after adding item to action bar&#39;s options menu from Fragment followed by orientation change-Collection of common programming errors"},"content":{"rendered":"<p><strong>This is your MainActivity:<\/strong><\/p>\n<pre><code>public class BaseSampleActivity extends SherlockFragmentActivity {\n\n        TestFragmentAdapter mAdapter;\n        ViewPager mPager;\n        PageIndicator mIndicator;\n\n        protected ListFragment mFrag;\n\n\n\n        @Override\n        public void onCreate(Bundle savedInstanceState) {\n            \/\/ TODO Auto-generated method stub\n            super.onCreate(savedInstanceState);\n\n            setContentView(R.layout.themed_titles);\n\n\n\n\/\/This adapter can load as many fragment as you want with different content, see later                  \n                    mAdapter = new TestFragmentAdapter(getSupportFragmentManager());\n\n                    mPager = (ViewPager)findViewById(R.id.pager);\n                    mPager.setAdapter(mAdapter);\n                    mPager.setCurrentItem(1);\n                    mIndicator = (TitlePageIndicator)findViewById(R.id.indicator);\n                    mIndicator.setViewPager(mPager);\n\n\n        }\n\n        @Override\n        public boolean onCreateOptionsMenu(Menu menu) {\n            super.onCreateOptionsMenu(menu);\n   \/\/This show how to set up a Searhbar         \n             SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());\n            searchView.setQueryHint(\"Procure pelo nome\");\n            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {\n\n                @Override\n                public boolean onQueryTextSubmit(String query) {\n\n                    \/\/ TODO Auto-generated method stub\n    \/\/              Intent search = new Intent(getApplicationContext(), SearchableActivity.class);\n    \/\/              search.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);\n    \/\/              search.putExtra(\"query\", query);\n    \/\/              startActivity(search);\n\n                    return true;\n                }\n\n                @Override\n                public boolean onQueryTextChange(String newText) {\n                    \/\/ TODO Auto-generated method stub\n                    return false;\n                }\n            });\n\n            menu.add(\"Search\")\n                .setIcon(R.drawable.ic_search_inverse)\n                .setActionView(searchView)\n                .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);\n   \/\/This is how to set up a SubMenu         \n            SubMenu subMenu1 = menu.addSubMenu(\"Action Item\");\n            subMenu1.add(0, 1, 0, \"Sample\");\n            subMenu1.add(0, 2, 0, \"Menu\");\n            subMenu1.add(0, 3, 0, \"Sair\");\n\n            MenuItem subMenu1Item = subMenu1.getItem();\n            subMenu1Item.setIcon(R.drawable.ic_title_share_default);\n            subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);\n\n\n\n\n            return true;\n        }\n\n\n\n        @Override\n        public boolean onOptionsItemSelected(MenuItem item) {\n            switch (item.getItemId()) {\n  \/\/This is a switch case to do when the SubMenu is clicked.              \n                case 1:\n                    Toast.makeText(BaseSampleActivity.this, \"Now \"+item.getItemId(), Toast.LENGTH_SHORT).show();\n                    return true;\n                case 2:\n                    Toast.makeText(BaseSampleActivity.this, \"Now = \"+item.getItemId(), Toast.LENGTH_SHORT).show();\n                    return true;\n                case 3:\n                    Toast.makeText(BaseSampleActivity.this, \"Now = \"+item.getItemId(), Toast.LENGTH_SHORT).show();\n\n                    return true;\n\n            }\n            return super.onOptionsItemSelected(item);\n        }\n\n\n    }\n<\/code><\/pre>\n<p><strong>This is your FragmentPagerAdapter:<\/strong><\/p>\n<pre><code> class TestFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter {\n\/\/Here you set up the title of each fragment, its in portuguese.\n        protected static final String[] CONTENT = new String[] { \"CATEGORIAS\", \"PRINCIPAL\", \"AS MELHORES\", };\n        protected static final int[] ICONS = new int[] {\n                R.drawable.perm_group_calendar,\n                R.drawable.perm_group_camera,\n                R.drawable.perm_group_device_alarms,\n        };\n\n        private int mCount = CONTENT.length;\n\n        public TestFragmentAdapter(FragmentManager fm) {\n            super(fm);\n        }\n\n        @Override\n        public Fragment getItem(int position) {Fragment f = null;\n        switch(position){\n        case 0:\n        {\n\/\/Here you can set up a lot of diferent fragment content, here I just created a simple \/\/arraylistfragment\n        f = new ArrayListFragment();\n        \/\/ set arguments here, if required\n        Bundle args = new Bundle();\n        args.putInt(ArrayListFragment.ARG_position, position);\n        f.setArguments(args);\n        break;\n        }\n        case 1:\n        {\n            f = new ArrayListFragment();\n            \/\/ set arguments here, if required\n            Bundle args = new Bundle();\n            f.setArguments(args);\n            break;\n        }\n        case 2:\n        {   \n            f = new ArrayListFragment();\n            \/\/ set arguments here, if required\n            Bundle args = new Bundle();\n            f.setArguments(args);\n            break;\n        }   \n        default:\n          throw new IllegalArgumentException(\"not this many fragments: \" + position);\n        }\n\n\n        return f;\n        }\n\n        @Override\n        public int getCount() {\n            return mCount;\n        }\n\n        @Override\n        public CharSequence getPageTitle(int position) {\n          return TestFragmentAdapter.CONTENT[position % CONTENT.length];\n        }\n\n\n\n        @Override\n        public int getIconResId(int index) {\n          return ICONS[index % ICONS.length];\n        }\n\n        public void setCount(int count) {\n            if (count &gt; 0 &amp;&amp; count<\/code><\/pre>\n<p id=\"rop\"><small>Originally posted 2014-01-05 10:07:49. <\/small><\/p>","protected":false},"excerpt":{"rendered":"<p>This is your MainActivity: public class BaseSampleActivity extends SherlockFragmentActivity { TestFragmentAdapter mAdapter; ViewPager mPager; PageIndicator mIndicator; protected ListFragment mFrag; @Override public void onCreate(Bundle savedInstanceState) { \/\/ TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.themed_titles); \/\/This adapter can load as many fragment as you want with different content, see later mAdapter = new TestFragmentAdapter(getSupportFragmentManager()); mPager = (ViewPager)findViewById(R.id.pager); mPager.setAdapter(mAdapter); [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2302","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/2302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=2302"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/2302\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=2302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=2302"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=2302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}