ActionBarSherlock icon indicating copy to clipboard operation
ActionBarSherlock copied to clipboard

StackOverFlow on invalidateOptionsMenu()

Open minlite opened this issue 11 years ago • 3 comments

I get FC on the line I'm trying to refresh the actionbar so it will display the changes: The crash is exactly on the invalidateOptionsMenu() method. I'm using the latest code from the dev branch Do you guys have any ideas?

05-31 18:21:46.719: E/AndroidRuntime(525): FATAL EXCEPTION: main
05-31 18:21:46.719: E/AndroidRuntime(525): java.lang.StackOverflowError
05-31 18:21:46.719: E/AndroidRuntime(525):  at android.content.res.StringBlock.get(StringBlock.java:70)
05-31 18:21:46.719: E/AndroidRuntime(525):  at android.content.res.AssetManager.getResourceValue(AssetManager.java:200)
05-31 18:21:46.719: E/AndroidRuntime(525):  at android.content.res.Resources.getValue(Resources.java:888)
05-31 18:21:46.719: E/AndroidRuntime(525):  at android.content.res.Resources.loadXmlResourceParser(Resources.java:1869)
05-31 18:21:46.719: E/AndroidRuntime(525):  at android.content.res.Resources.getLayout(Resources.java:731)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.view.MenuInflater.inflate(MenuInflater.java:109)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.minlite.feniix.Feniix.onCreateOptionsMenu(Feniix.java:513)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.app.SherlockListActivity.onCreatePanelMenu(SherlockListActivity.java:184)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:559)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.preparePanel(ActionBarSherlockCompat.java:466)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.dispatchInvalidateOptionsMenu(ActionBarSherlockCompat.java:265)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.app.SherlockListActivity.invalidateOptionsMenu(SherlockListActivity.java:140)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.minlite.feniix.Feniix.onPrepareOptionsMenu(Feniix.java:506)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.app.SherlockListActivity.onPreparePanel(SherlockListActivity.java:196)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.ActionBarSherlock.callbackPrepareOptionsMenu(ActionBarSherlock.java:580)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.preparePanel(ActionBarSherlockCompat.java:494)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.dispatchInvalidateOptionsMenu(ActionBarSherlockCompat.java:265)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.app.SherlockListActivity.invalidateOptionsMenu(SherlockListActivity.java:140)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.minlite.feniix.Feniix.onPrepareOptionsMenu(Feniix.java:506)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.app.SherlockListActivity.onPreparePanel(SherlockListActivity.java:196)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.ActionBarSherlock.callbackPrepareOptionsMenu(ActionBarSherlock.java:580)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.preparePanel(ActionBarSherlockCompat.java:494)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.dispatchInvalidateOptionsMenu(ActionBarSherlockCompat.java:265)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.app.SherlockListActivity.invalidateOptionsMenu(SherlockListActivity.java:140)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.minlite.feniix.Feniix.onPrepareOptionsMenu(Feniix.java:506)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.app.SherlockListActivity.onPreparePanel(SherlockListActivity.java:196)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.ActionBarSherlock.callbackPrepareOptionsMenu(ActionBarSherlock.java:580)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.preparePanel(ActionBarSherlockCompat.java:494)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.dispatchInvalidateOptionsMenu(ActionBarSherlockCompat.java:265)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.app.SherlockListActivity.invalidateOptionsMenu(SherlockListActivity.java:140)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.minlite.feniix.Feniix.onPrepareOptionsMenu(Feniix.java:506)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.app.SherlockListActivity.onPreparePanel(SherlockListActivity.java:196)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.ActionBarSherlock.callbackPrepareOptionsMenu(ActionBarSherlock.java:580)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.preparePanel(ActionBarSherlockCompat.java:494)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.dispatchInvalidateOptionsMenu(ActionBarSherlockCompat.java:265)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.app.SherlockListActivity.invalidateOptionsMenu(SherlockListActivity.java:140)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.minlite.feniix.Feniix.onPrepareOptionsMenu(Feniix.java:506)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.app.SherlockListActivity.onPreparePanel(SherlockListActivity.java:196)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.ActionBarSherlock.callbackPrepareOptionsMenu(ActionBarSherlock.java:580)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.preparePanel(ActionBarSherlockCompat.java:494)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.dispatchInvalidateOptionsMenu(ActionBarSherlockCompat.java:265)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.actionbarsherlock.app.SherlockListActivity.invalidateOptionsMenu(SherlockListActivity.java:140)
05-31 18:21:46.719: E/AndroidRuntime(525):  at com.

minlite avatar May 31 '13 16:05 minlite

Don't call invalidateOptionsMenu from onPrepareOptionsMenu.

JakeWharton avatar May 31 '13 16:05 JakeWharton

It works fine when I target to android 3+ using native action bar. (not using sherlock). For my software it should be there because I prepare my menu options there. Where should I call it from when using Sherlock?

minlite avatar May 31 '13 16:05 minlite

You should not explicitly call it, unless you want to update the states of your menu items. This method is a way to notify the Menu that something has changed and it is no longer updated. (For example, inside a clickListener, remove this menu item) By the way, you should rather call supportInvalidateOptionsMenu();

Edit: ooops, apparently, supportInvalidateOptionsMenu() just call invalidateOptionsMenu() ... U_u

SimonMarquis avatar Jun 04 '13 14:06 SimonMarquis