共享动作提供程序无效

时间:2015-06-06 00:53:08

标签: android

我创建了一个Android应用。 它有一个主要活动(带片段)和一个详细的活动(带片段) 在详细的活动片段中,我想添加一个共享按钮,它将共享一些固定的文本(比如 - “Hello”)。 分享按钮出现在应用程序中,但单击它时没有任何反应。 我想分享简单的固定文本。

这是menu_detail.xml文件:

    <?xml version="1.0" encoding="utf-8"?>

<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"
        app:actionProviderClass="android:support.v7.widget.ShareActionProvider" />
</menu>

这是DetailActivityFragment.java文件:

package com.blogspot.amangoeliitb.amansblog;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.widget.ShareActionProvider;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.widget.TextView;

public class DetailActivityFragment extends Fragment {

    public static final String LOG_TAG = DetailActivityFragment.class.getSimpleName();

    public DetailActivityFragment() {
        setHasOptionsMenu(true);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_detail, menu);
        MenuItem menuItem = menu.findItem(R.id.action_share);
        ShareActionProvider mShareActionProvider =
                (ShareActionProvider) MenuItemCompat.getActionProvider(menuItem);
        if(mShareActionProvider != null) {
            mShareActionProvider.setShareIntent(createShareForecastIntent());
        }
        else
            Log.d(LOG_TAG, "Share action provider is null");
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_detail, container, false);

        Intent intent = getActivity().getIntent();

        Bundle extras = intent.getExtras();
        String title = extras.getString("TITLE") ;
        String content = extras.getString("CONTENT") ;
        ((TextView) rootView.findViewById(R.id.post_title)).setText(title);
        ((WebView) rootView.findViewById(R.id.post_content)).loadData(content, "text/html", "UTF-8");

        return rootView;
    }

    private Intent createShareForecastIntent() {
        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
        shareIntent.setType("text/plain");
        shareIntent.putExtra(Intent.EXTRA_TEXT, "Hello");
        return shareIntent;
    }
}

1 个答案:

答案 0 :(得分:0)

我也在研究同样的问题。

menu_detail.xml文件中的代码有一分钟错误。在这一行

应用:actionProviderClass = “机器人:support.v7.widget.ShareActionProvider”

在android之后删除“:”并用句号替换。所以它应该是

应用:actionProviderClass = “android.support.v7.widget.ShareActionProvider”

其他一切都很好。它对我有用。