我创建了一个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;
}
}
答案 0 :(得分:0)
我也在研究同样的问题。
menu_detail.xml文件中的代码有一分钟错误。在这一行
应用:actionProviderClass = “机器人:support.v7.widget.ShareActionProvider”强>
在android之后删除“:”并用句号替换。所以它应该是
应用:actionProviderClass = “android.support.v7.widget.ShareActionProvider”强>
其他一切都很好。它对我有用。