Добавление действия Easy Share в ActionBar

У меня проблемы. Я следовал многим инструкциям, но все еще не могу заставить свою кнопку "Поделиться" работать. Я получил значок, показывающий в ActionBar, но когда я нажимаю, ничего не происходит, когда android:showAsAction="always". Но когда android: showAsAction = "никогда", это работает. Я просто хочу, чтобы значок общего доступа всегда отображался в 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>

3 ответа

Если вы не нашли решение, попробуйте это, чтобы получить 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 share = new Intent (Intent.ACTION_SEND)". Вы, кажется, делаете все правильно!

В

case R.id.shareButton:

Вместо того, чтобы использовать

            Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); 

использовать:

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
mShareActionProvider.setShareIntent(sharingIntent);

Обратитесь к следующим ссылкам для получения дополнительной информации:

https://developer.android.com/reference/android/widget/ShareActionProvider.html

https://developer.android.com/training/sharing/shareaction.html

Другие вопросы по тегам