android - 共享图标未显示在 ActionBar 中

标签 android

我正在尝试使用 ShareActionProvider,如 http://developer.android.com/training/sharing/shareaction.html但我的 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>

在我的 Activity 中,我有:

@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>

为什么分享图标不显示?

最佳答案

您的一些代码 (compat:showAsAction) 是为使用操作栏的 appcompat-v7 backport 而编写的。

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

选择一个并坚持下去。

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

关于android - 共享图标未显示在 ActionBar 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28768802/

相关文章:

android - 将 SharedElement Activity 转换与自定义 View 一起使用

java - setRetainInstance() 方法是否保留 ArrayAdapter 数据?

java - 意向服务单例

android - android中资源的数据加密

java - LoginTask(AsyncTask) 空指针

Android 电池使用情况 - 详细信息

android - 如何提高ffmpeg视频编码速度?

android - 蓝牙权限请求对话框 - 在屏幕旋转时重新创建(方向更改)

Android 如何在简单的通知中添加按钮?

android - 有没有一种简单的方法可以用 ArrayList 填充 Spinner?