首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ShareActionProvider为空

ShareActionProvider为空
EN

Stack Overflow用户
提问于 2014-08-02 09:46:26
回答 2查看 3K关注 0票数 0

我已经找了三四天关于这个问题的解决方案。我已经尝试过了:Null Pointer exception in using support library share action providerwhy MenuItemCompat.getActionProvider returns null?以及其他一些,但在ShareActionProvider上仍然是空的。我在开发android应用程序方面很新,所以我真的需要一些帮助。

我的xml菜单文件是:

代码语言:javascript
复制
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/action_share"
    android:title="@string/action_share"
    app:showAsAction="always"
    android:icon="@android:drawable/ic_menu_share"
    android:actionProviderClass="android.support.v7.widget.ShareActionProvider"/></menu>

我的片段是:

代码语言:javascript
复制
public static class DailyActivityFragment extends Fragment {
    private static final String LOG_TAG = "Dailyshare";
    private ShareActionProvider mShareActionProvider;

    public DailyActivityFragment() {
        setHasOptionsMenu(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_detail, container, false);
        return rootView;
    }

    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
        inflater.inflate(R.menu.detailfragment, menu);
        MenuItem item = menu.findItem(R.id.action_share);
        mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
        if (mShareActionProvider != null) {
            mShareActionProvider.setShareIntent(createShareIntent());
        }else{
            Log.i(LOG_TAG, "is null");
        }
    }

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

作为一种进口,我有:

代码语言:javascript
复制
import android.support.v7.widget.ShareActionProvider;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-02 10:51:18

您只需创建一个ShareActionProvider并分配它。

代码语言:javascript
复制
mShareActionProvider = new ShareActionProvider();
mShareActionProvider.setShareIntent(createShareIntent())
MenuItemCompat.setActionProvider(item, mShareActionProvider);
票数 16
EN

Stack Overflow用户

发布于 2015-09-16 08:09:48

XML中的命名空间使用错误:

应该是app__:actionProviderClass (提供者类来自apk资源,而不是本地android类)。

请参阅https://stackoverflow.com/a/32602896/907576

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25093706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档