ShareActionProvider выдает ошибку с Theme.Sherlock.Light.DarkActionBar?

Я хочу, чтобы в одном из моих действий был поставщик общих ресурсов для панели действий, и в качестве baseTheme у меня есть Theme.Sherlock.Light.DarkActionBar.

Вот как я могу создать опцию общего доступа к активности:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    ShareActionProvider provider = new ShareActionProvider(getSupportActionBar().getThemedContext());
    provider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
    provider.setShareIntent(createShareIntent());
    menu.add(Menu.NONE, SHARE_ACTION_ID, 0,
            getString(R.string.action_share))
            .setIcon(R.drawable.icon_share_white)
            .setActionProvider(provider)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

    return super.onCreateOptionsMenu(menu);
}

private Intent createShareIntent() {
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_TEXT, url);
    return shareIntent;
}

И это моя базовая тема:

<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
    <!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.    

    -->
</style> 

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    <item name="actionBarItemBackground">@drawable/action_item_background_selector</item>
    <item name="android:actionBarItemBackground">@drawable/action_item_background_selector</item>
</style>

Приложение прекрасно работает с Theme.Sherlock, но когда я использую свой AppTheme, он выдает мне эту ошибку:

FATAL EXCEPTION: main
android.content.res.Resources$NotFoundException: Resource ID #0x0
at android.content.res.Resources.getValue(Resources.java:1026)
at android.content.res.Resources.getDrawable(Resources.java:671)
at com.actionbarsherlock.widget.ShareActionProvider.onCreateActionView(ShareActionProvider.java:170)
at com.actionbarsherlock.internal.view.ActionProviderWrapper.onCreateActionView(ActionProviderWrapper.java:23)
at android.view.ActionProvider.onCreateActionView(ActionProvider.java:98)
at com.android.internal.view.menu.MenuItemImpl.getActionView(MenuItemImpl.java:580)
at com.android.internal.view.menu.ActionMenuPresenter.getItemView(ActionMenuPresenter.java:264)
at com.android.internal.view.menu.ActionMenuPresenter.flagActionItems(ActionMenuPresenter.java:555)
at com.android.internal.view.menu.MenuBuilder.flagActionItems(MenuBuilder.java:1048)
at com.android.internal.view.menu.BaseMenuPresenter.updateMenuView(BaseMenuPresenter.java:91)
at com.android.internal.view.menu.ActionMenuPresenter.updateMenuView(ActionMenuPresenter.java:297)
at com.android.internal.view.menu.MenuBuilder.dispatchPresenterUpdate(MenuBuilder.java:244)
at com.android.internal.view.menu.MenuBuilder.onItemsChanged(MenuBuilder.java:946)
at com.android.internal.view.menu.MenuBuilder.startDispatchingItemsChanged(MenuBuilder.java:969)
at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:498)
at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:829)
at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:3192)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
at dalvik.system.NativeStart.main(Native Method)

Я видел много подобных вопросов и их принятых ответов, но не повезло. Есть идеи, как это исправить? Заранее спасибо.

Редактировать: Удаление "actionBarItemBackground" этих атрибутов из AppTheme в style.xml также работает, но мне нужна панель действий, чтобы иметь собственный фон... Так что может быть решением для этого?

1 ответ

У меня нет 50 репутации, чтобы комментировать, поэтому я отвечу здесь.

Эта ошибка:

Resources$NotFoundException: Resource ID #0x0

говорит вам, что стиль или parent Директива стиля не может быть решена Android во время выполнения. Проверьте ваш файл styles.xml еще раз.

Если вы используете Eclipse, вы можете проверить правильность name, parent и т. д., нажав левой кнопкой мыши или Ctrl+ щелчок левой кнопкой мыши по каждой директиве. Если выбранное значение разрешено, Eclipse переместится в другую область styles.xml или откройте новый файл таблицы стилей.

ОБНОВЛЕНИЕ 1:

@yahya: "Я использую тему AppBase..., так что она работает почти на все действия, но не только на эту". Опубликуйте коды действий, которые не работают. Также опубликуйте свой файл AndroidManifest.xml.

Другие вопросы по тегам