Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在ActionBar中添加轻松共享操作_Android_Android Intent_Android Actionbar_Share Button - Fatal编程技术网

Android 在ActionBar中添加轻松共享操作

Android 在ActionBar中添加轻松共享操作,android,android-intent,android-actionbar,share-button,Android,Android Intent,Android Actionbar,Share Button,我有问题。我一直在遵循很多指南,但仍然无法让我的共享按钮正常工作。我在ActionBar中看到了图标,但当我按下时,android:showaAction=“always”时什么也没有发生。但是当安卓:showAsAction=“never”运行时,它就正常了。我只希望共享图标总是显示在ActionBar中。我做错了什么?请帮忙 这是我的密码: public class Main extends Activity { private ShareActionProvider mShare

我有问题。我一直在遵循很多指南,但仍然无法让我的共享按钮正常工作。我在ActionBar中看到了图标,但当我按下时,android:showaAction=“always”时什么也没有发生。但是当安卓:showAsAction=“never”运行时,它就正常了。我只希望共享图标总是显示在ActionBar中。我做错了什么?请帮忙

这是我的密码:

public class Main extends Activity {

    private ShareActionProvider mShareActionProvider;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        MenuItem item = menu.findItem(R.id.shareButton);
        mShareActionProvider = (ShareActionProvider) item.getActionProvider();
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.shareButton:
            Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); 
            sharingIntent.setType("text/plain");
            String shareBody = "Check it out";
            sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Subject");
            sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
            startActivity(Intent.createChooser(sharingIntent, "Share via"));
            return true;
        case R.id.aboutButton:
            Intent intent = new Intent(this, About.class);
            startActivity(intent);
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }
}
这是我的menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/shareButton"
        android:actionProviderClass="android.widget.ShareActionProvider"
        android:title="@string/share"
        android:showAsAction="always"/>  **---> when I put here "NEVER" then it works! But I want Share to be always as icon**

    <item
        android:id="@+id/aboutButton"
        android:actionProviderClass="android.widget.ShareActionProvider"
        android:showAsAction="never"
        android:title="@string/about_dev"/>
</menu>

**--->当我把“从不”放在这里时,它就起作用了!但我希望共享永远是一个图标**
请尝试“意向共享=新意向(意向.操作\u发送)”。
你似乎把一切都做对了

如果您没有找到解决方案,请尝试获取ShareActionProvider

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.share)
            .getActionProvider();
    mShareActionProvider.setShareIntent(doShare());
    return true;
}
doShare()
将是:

    public Intent doShare() {
    // populate the share intent with data
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_TEXT, "Put whatever you want");
    return intent;
}

而不是使用

            Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); 
使用:

有关更多信息,请参阅以下链接:


按照这种方法,在创建选项菜单时,我必须知道要共享的数据。但是,当我只知道在实际单击按钮时共享哪些数据时,该怎么办?
            Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); 
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
mShareActionProvider.setShareIntent(sharingIntent);