ShareActionProvider为null [英] ShareActionProvider is null

查看:180
本文介绍了ShareActionProvider为null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在寻找关于这个解决方案3或4天。我努力了:
<一href=\"http://stackoverflow.com/questions/19131873/null-pointer-exception-in-using-support-library-share-action-provider\">Null使用支持库共享行动提供商指针异常
要么
<一href=\"http://stackoverflow.com/questions/19358510/why-menuitemcompat-getactionprovider-returns-null\">why MenuItemCompat.getActionProvider返回null?以及其他一些
但我仍得空上ShareActionProvider。我是pretty新开发的Andr​​oid应用程序,所以我真的需要一些帮助。

我的XML菜单文件是:

 &LT;菜单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:程序=htt​​p://schemas.android.com/apk/res-auto&GT;
&LT;项目
    机器人:ID =@ + ID / action_share
    机器人:标题=@字符串/ action_share
    应用:showAsAction =总是
    机器人:图标=@机器人:可绘制/ ic_menu_share
    机器人:actionProviderClass =android.support.v7.widget.ShareActionProvider/&GT;&LT; /菜单&gt;

和我的片段是:

 公共静态类DailyActivityFragment扩展片段{
    私有静态最后弦乐LOG_TAG =Dailyshare;
    私人ShareActionProvider mShareActionProvider;    公共DailyActivityFragment(){
        setHasOptionsMenu(真);
    }    @覆盖
    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                             捆绑savedInstanceState){
        查看rootView = inflater.inflate(R.layout.fragment_detail,集装箱,FALSE);
        返回rootView;
    }    公共无效onCreateOptionsMenu(菜单菜单,MenuInflater气筒){
        inflater.inflate(R.menu.detailfragment,菜单);
        菜单项项= menu.findItem(R.id.action_share);
        mShareActionProvider =(ShareActionProvider)MenuItemCompat.getActionProvider(项目);
        如果(mShareActionProvider!= NULL){
            mShareActionProvider.setShareIntent(createShareIntent());
        }其他{
            Log.i(LOG_TAG,为空);
        }
    }    私人意图createShareIntent(){
        意图shareIntent =新意图(Intent.ACTION_SEND);
        shareIntent.setType(text / plain的);
        shareIntent.putExtra(Intent.EXTRA_TEXT,
                这段文字将共享);
        返回shareIntent;
    }
}

为导入我有:

 进口android.support.v7.widget.ShareActionProvider;


解决方案

您可以只创建一个ShareActionProvider,并为其分配。

  mShareActionProvider =新ShareActionProvider();
mShareActionProvider.setShareIntent(createShareIntent())
MenuItemCompat.setActionProvider(项目,mShareActionProvider);

I have been searching for 3 or 4 days about a solution on this. I have tried: Null Pointer exception in using support library share action provider or why MenuItemCompat.getActionProvider returns null? and some others but still I get null on ShareActionProvider. I am pretty new on developing android apps so I really need some help.

My xml menu file is:

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

and my fragment is:

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;
    }
}

as an import I have:

import android.support.v7.widget.ShareActionProvider;

解决方案

You could just create a ShareActionProvider and assign it.

mShareActionProvider = new ShareActionProvider();
mShareActionProvider.setShareIntent(createShareIntent())
MenuItemCompat.setActionProvider(item, mShareActionProvider);

这篇关于ShareActionProvider为null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆