{"id":457,"date":"2013-07-03T17:04:42","date_gmt":"2013-07-04T01:04:42","guid":{"rendered":"http:\/\/jasonmcreynolds.com\/?p=457"},"modified":"2015-10-16T11:36:52","modified_gmt":"2015-10-16T19:36:52","slug":"menuinflater-nullpointerexception-npe","status":"publish","type":"post","link":"https:\/\/jasonmcreynolds.com\/?p=457","title":{"rendered":"MenuInflater NullPointerException (NPE)"},"content":{"rendered":"<p>I just recently published my first app on Google Play,\u00a0and after I had published it I was playing with it on my Galaxy S3 and it crashed when I tried to delete a page. I know I had this working correctly on my Nexus 7 prior to publishing it, but I didn&#8217;t test it on my phone (shame on me :(). So, I went to work trying to figure out what the problem was, and here&#8217;s part of the stack trace:<\/p>\n<pre class=\"scroll:true lang:java decode:true\">FATAL EXCEPTION: main\r\njava.lang.NullPointerException\r\n\tat com.actionbarsherlock.view.MenuInflater.inflate(MenuInflater.java:109)\r\n\tat com.test.app.SomeFragment.onCreateOptionsMenu(SomeFragment.java:1921)\r\n\tat android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:55)\r\n\tat com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:559)\r\n\tat com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:65)\r\n\tat com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:165)\r\n\tat com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:446)\r\n\tat com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:820)\r\n\tat com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchInvalidateOptionsMenu(ActionBarSherlockNative.java:52)\r\n\tat com.actionbarsherlock.app.SherlockFragmentActivity.invalidateOptionsMenu(SherlockFragmentActivity.java:150)\r\n\tat com.actionbarsherlock.app.SherlockFragmentActivity.supportInvalidateOptionsMenu(SherlockFragmentActivity.java:156)\r\n\tat android.support.v4.app.Fragment.setHasOptionsMenu(Fragment.java:763)\r\n\tat com.test.app.SomeFragment.onCreate(SomeFragment.java:190)\r\n\tat android.support.v4.app.Fragment.performCreate(Fragment.java:1437)\r\n\tat android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:877)\r\n\tat android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)\r\n\tat android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)\r\n\tat android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)\r\n\tat android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)\r\n\tat android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)\r\n\tat android.support.v4.view.ViewPager.populate(ViewPager.java:1064)\r\n\tat android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:548)\r\n\tat android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:507)\r\n\tat android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:905)\r\n\tat android.support.v4.view.ViewPager$PagerObserver.onChanged(ViewPager.java:2772)\r\n\tat android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)\r\n\tat android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:276)\r\n\tat com.test.app.SomeActivity.updateView(SomeActivity.java:624)\r\n\tat com.test.app.SomeActivity$LoadInfo.onPostExecute(SomeActivity.java:353)\r\n\tat com.test.app.SomeActivity$LoadInfo.onPostExecute(SomeActivity.java:1)\r\n\tat android.os.AsyncTask.finish(AsyncTask.java:631)\r\n\tat android.os.AsyncTask.access$600(AsyncTask.java:177)\r\n\tat android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)\r\n\tat android.os.Handler.dispatchMessage(Handler.java:99)\r\n\tat android.os.Looper.loop(Looper.java:137)\r\n\tat android.app.ActivityThread.main(ActivityThread.java:4950)\r\n\tat java.lang.reflect.Method.invokeNative(Native Method)\r\n\tat java.lang.reflect.Method.invoke(Method.java:511)\r\n\tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)\r\n\tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)\r\n\tat dalvik.system.NativeStart.main(Native Method)<\/pre>\n<p>After checking the stack trace and doing some research, I narrowed it down to an issue with setHasOptionsMenu(true) and I thought it might be a problem with the ActionBarSherlock Library. Well, I stumbled upon <a title=\"Writing a real Android app from scratch part 39\" href=\"http:\/\/www.ashokgelal.com\/2013\/01\/writing-a-real-android-app-from-scratch-part-39-gps-locationmanager-and-geocoding\/\">this post<\/a> and found that setHasOptionsMenu(true) was set in onActivityCreated(). I had set it in onCreate(), since when I had looked at how to use it that&#8217;s where everyone seemed to put it&#8230;at least in the posts I looked at. Well, it was already broken, so I had nothing to lose and the other stuff I had tried didn&#8217;t fix it. I moved setHasOptionsMenu(true) from onCreate() to OnActivityCreated() and then ran a test. Bingo! That fixed the problem on my phone! I tested on my other two tablets (Nexus 7 and Motorola Xoom) and it worked like it should on both of those as well.<\/p>\n<p>Anyway, just throwing this out there in case anyone else runs into this problem.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I just recently published my first app on Google Play,\u00a0and after I had published it I was playing with it on my Galaxy S3 and it crashed when I tried to delete a page. I know I had this working correctly on my Nexus 7 prior to publishing it, but I didn&#8217;t test it on [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":463,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_s2mail":"yes","ngg_post_thumbnail":0,"footnotes":""},"categories":[37,65,63,51],"tags":[86,99,97,73,72,71],"class_list":["post-457","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","category-code","category-development","category-featured","tag-android","tag-code","tag-development","tag-npe","tag-nullpointerexception","tag-troubleshooting"],"_links":{"self":[{"href":"https:\/\/jasonmcreynolds.com\/index.php?rest_route=\/wp\/v2\/posts\/457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jasonmcreynolds.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jasonmcreynolds.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jasonmcreynolds.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jasonmcreynolds.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=457"}],"version-history":[{"count":18,"href":"https:\/\/jasonmcreynolds.com\/index.php?rest_route=\/wp\/v2\/posts\/457\/revisions"}],"predecessor-version":[{"id":637,"href":"https:\/\/jasonmcreynolds.com\/index.php?rest_route=\/wp\/v2\/posts\/457\/revisions\/637"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jasonmcreynolds.com\/index.php?rest_route=\/wp\/v2\/media\/463"}],"wp:attachment":[{"href":"https:\/\/jasonmcreynolds.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=457"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jasonmcreynolds.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=457"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jasonmcreynolds.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}