【问题标题】:Share icon not showing in ActionBarActionBar 中未显示共享图标
【发布时间】:2015-02-27 15:39:02
【问题描述】:

我正在尝试使用 http://developer.android.com/training/sharing/shareaction.html 中的 ShareActionProvider,但我的 ActionBar 没有显示共享图标。而是显示溢出按钮,其中一个菜单项“共享”(其余的都很好)。我正在使用此代码:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:compat="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menu_item_share"
    android:title="share"
    compat:showAsAction="ifRoom|collapseActionView"
    android:actionProviderClass="android.widget.ShareActionProvider"/>
</menu>

在我的活动中,我有:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate menu resource file.
    getMenuInflater().inflate(R.menu.menu_detail, menu);

    // Locate MenuItem with ShareActionProvider
    MenuItem item = menu.findItem(R.id.menu_item_share);

    // Fetch and store ShareActionProvider
    mShareActionProvider = (ShareActionProvider) item.getActionProvider();

    // Return true to display menu
    return super.onCreateOptionsMenu(menu);
}

// Call to update the share intent
private void setShareIntent(Intent shareIntent) {
    if (mShareActionProvider != null) {
        mShareActionProvider.setShareIntent(shareIntent);
    }
}

我的主题是:

<style name="Theme.Base" parent="android:Theme.Light" />

<style name="AppTheme" parent="Theme.Base">
    <item name="android:actionModeCloseDrawable">@drawable/ic_action_back</item>
</style>

为什么不显示分享图标?

【问题讨论】:

    标签: android


    【解决方案1】:

    您的某些代码 (compat:showAsAction) 是为使用操作栏的 appcompat-v7 反向端口而编写的。

    您的某些代码(getActionProvider()Theme.Light)是为使用本机操作栏而编写的。

    选择一个并坚持下去。

    我的猜测是,您当前的更多代码是为原生操作栏设置的,在这种情况下,将菜单 XML 资源中的 compat: 更改为 android: 可能会让您的 ShareActionProvider 正常工作。

    【讨论】:

    • 当我在菜单文件中更改为 android: 时,它告诉我使用 compat:showAsAction 因为我正在使用 appcompat 库。我想知道我怎么能碰这个。我想我不需要 appcompat。
    • @tw-S:“它告诉我使用 compat:showAsAction 因为我正在使用 appcompat 库”——再次选择一个并坚持使用它。 “我想我不需要 appcompat”——可能不需要。这是一个使用ShareActionProvider而不使用appcompat-v7的示例项目:github.com/commonsguy/cw-omnibus/tree/master/ActionBar/…
    • 谢谢,我去看看。一个问题:如何摆脱当前项目中的 Appcompat 库引用?它似乎一直存在......
    • @tw-S: 最简单的事情是摆脱库本身,然后修复任何构建错误。如果您使用的是 Android Studio,请检查模块的 build.gradle 文件并删除 appcompat-v7 行。如果您使用的是 Eclipse,请从主菜单中选择 Project > Properties,在属性对话框中选择 Android,然后删除附加库项目列表中的 appcompat-v7 条目。
    • 哦 - 我注意到您在 github.com/commonsguy/cw-omnibus/tree/master/ActionBar/… 中的代码对我不起作用。图标出现,但没有点击响应。我读到需要为 ShareActionProvider 分配一个默认意图才能工作。
    猜你喜欢
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多