0

アクティビティの 1 つでアクションバー共有プロバイダーが必要で、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)

この種の質問とその受け入れられた回答をたくさん見てきましたが、運がありません..これを修正する方法はありますか? 前もって感謝します。

編集: style.xmlのAppThemeからこれらの属性「actionBarItemBackground」を削除することもできますが、アクションバーにもカスタム背景が必要です...それに対する解決策は何ですか?

4

1 に答える 1

0

コメントする50の評判がないので、ここで答えます。

このエラー:

Resources$NotFoundException: Resource ID #0x0

スタイル、またはスタイルのparentディレクティブが実行時に Android によって解決できないことを示します。styles.xmlファイルをもう一度確認してください。

Eclipse を使用している場合は、各ディレクティブを左クリックまたは Ctrl+左クリックして、、、などのディレクティブnameが正しいかどうかを確認できます。parentクリックした値が解決されると、Eclipse は 内の別の領域に移動するかstyles.xml、新しいスタイルシート ファイルを開きます。

更新 1:

@yahya: 「私は AppBase テーマを使用しています...ほとんどすべてのアクティビティで動作しますが、これだけではありません」動作していないアクティビティのコードを投稿してください。また、 AndroidManifest.xmlファイルを投稿してください。

于 2014-04-14T13:54:27.567 に答える