1

プロジェクトで actionbarsherlock を使用しており、フラグメント内からアクション バーを操作しようとしています...

したがって、最初に示したフラグメントでは、onPrepareOptionsMenu をオーバーライドしてアクションバーを無効にし、タイトルを変更しています... しかし、supportInvalidateOptionsMenu() を呼び出そうとすると、java.lang.StackOverflowError が発生します (Android 4.3 では発生しません)。 .

Delyanのソリューションを試してみましたが成功しませんでした...私のコードとログは以下のとおりです。何か提案はありますか? 前もって感謝します

- - - - -コード - - - - -

@Override
public void onPrepareOptionsMenu(Menu menu){
    super.onPrepareOptionsMenu(menu);
    Log.e("CategoriasLista", "Executou onPrepareOptionsMenu");
    int currentTab = ((MainActivity)getSherlockActivity()).getTabHost().getCurrentTab();
    if(currentTab==0){
        ActionBar bar = getSherlockActivity().getSupportActionBar();
        //getSherlockActivity().supportInvalidateOptionsMenu();
        ((MainActivity)getSherlockActivity()).runOnUiThread(new Runnable(){
            @Override
            public void run(){
                ((MainActivity)getSherlockActivity()).supportInvalidateOptionsMenu();
            }
        });
        bar.setNavigationMode(com.actionbarsherlock.app.ActionBar.NAVIGATION_MODE_STANDARD);
        bar.setTitle("Categorias");

    }
}

- - - - -ログ - - - - - -

10-21 09:35:32.910: ERROR/AndroidRuntime(5231): FATAL EXCEPTION: main
    java.lang.StackOverflowError
    at java.lang.Class.getClassLoaderImpl(Class.java:431)
    at java.lang.Class.getClassLoader(Class.java:398)
    at android.os.Bundle.<init>(Bundle.java:68)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.dispatchInvalidateOptionsMenu(ActionBarSherlockCompat.java:251)
    at com.actionbarsherlock.app.SherlockFragmentActivity.invalidateOptionsMenu(SherlockFragmentActivity.java:149)
    at com.actionbarsherlock.app.SherlockFragmentActivity.supportInvalidateOptionsMenu(SherlockFragmentActivity.java:155)
    at br.com.maisapp.Categorias.CategoriasLista$1.run(CategoriasLista.java:60)
    at android.app.Activity.runOnUiThread(Activity.java:3743)
    at br.com.maisapp.Categorias.CategoriasLista.onPrepareOptionsMenu(CategoriasLista.java:57)
    at android.support.v4.app.Watson.onPreparePanel(Watson.java:98)
    at com.actionbarsherlock.ActionBarSherlock.callbackPrepareOptionsMenu(ActionBarSherlock.java:581)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.preparePanel(ActionBarSherlockCompat.java:494)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.dispatchInvalidateOptionsMenu(ActionBarSherlockCompat.java:265)
    at com.actionbarsherlock.app.SherlockFragmentActivity.invalidateOptionsMenu(SherlockFragmentActivity.java:149)
    at com.actionbarsherlock.app.SherlockFragmentActivity.supportInvalidateOptionsMenu(SherlockFragmentActivity.java:155)
    at br.com.maisapp.Categorias.CategoriasLista$1.run(CategoriasLista.java:60)
    at android.app.Activity.runOnUiThread(Activity.java:3743)
    at br.com.maisapp.Categorias.CategoriasLista.onPrepareOptionsMenu(CategoriasLista.java:57)
    at android.support.v4.app.Watson.onPreparePanel(Watson.java:98)
    at com.actionbarsherlock.ActionBarSherlock.callbackPrepareOptionsMenu(ActionBarSherlock.java:581)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.preparePanel(ActionBarSherlockCompat.java:494)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.dispatchInvalidateOptionsMenu(ActionBarSherlockCompat.java:265)
    at com.actionbarsherlock.app.SherlockFragmentActivity.invalidateOptionsMenu(SherlockFragmentActivity.java:149)
    at com.actionbarsherlock.app.SherlockFragmentActivity.supportInvalidateOptionsMenu(SherlockFragmentActivity.java:155)
    at br.com.maisapp.Categorias.CategoriasLista$1.run(CategoriasLista.java:60)
    at android.app.Activity.runOnUiThread(Activity.java:3743)
    at br.com.maisapp.Categorias.CategoriasLista.onPrepareOptionsMenu(CategoriasLista.java:57)
    at android.support.v4.app.Watson.onPreparePanel(Watson.java:98)
    at com.actionbarsherlock.ActionBarSherlock.callbackPrepareOptionsMenu(ActionBarSherlock.java:581)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.preparePanel(ActionBarSherlockCompat.java:494)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.dispatchInvalidateOptionsMenu(ActionBarSherlockCompat.java:265)
    at com.actionbarsherlock.app.SherlockFragmentActivity.invalidateOptionsMenu(SherlockFragmentActivity.java:149)
    at com.actionbarsherlock.app.SherlockFragmentActivity.supportInvalidateOptionsMenu(SherlockFragmentActivity.java:155)
    at br.com.maisapp.Categorias.CategoriasLista$1.run(CategoriasLista.java:60)
    at android.app.Activity.runOnUiThread(Activity.java:3743)
    at br.com.maisapp.Categorias.CategoriasLista.onPrepareOptionsMenu(CategoriasLista.java:57)
    at android.support.v4.app.Watson.onPreparePanel(Watson.java:98)
    at com.actionbarsherlock.ActionBarSherlock.callbackPrepareOptionsMenu(ActionBarSherlock.java:581)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.preparePanel(ActionBarSherlockCompat.java:494)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.dispatchInvalidateOptionsMenu(ActionBarSherlockCompat.java:265)
    at com.actionbarsherlock.app.SherlockFragmentActivity.invalidateOptionsMenu(SherlockFragmentActivity.java:149)
    at com.actionbarsherlock.app.SherlockFragmentActivity.supportInvalidateOptionsMenu(SherlockFragmentActivity.java:155)
    at br.com.maisapp.Categorias.CategoriasLista$1.run(CategoriasLista.java:60)
    at android.app.Ac
4

1 に答える 1