Поделиться элементом на панели действий с помощью контекстной панели действий

Впервые я использую контекстную панель действий. Когда я нажимаю на элемент моего ListView, я хочу иметь возможность каким-то образом поделиться этим элементом (whatsapp/mail/gmail/drive и т. д. и т. д.). Я пытаюсь использовать этот метод, но не работает: макет меню:

<?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"/>
</menu>

Класс контекстной панели действий:

public class CABMode implements ActionMode.Callback {
private ShareActionProvider mshare;
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        mode.getMenuInflater().inflate(R.menu.cab, menu);
        return true;
    }

    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        // don't need to do anything
        return false;
    }

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        mshare = (ShareActionProvider) item.getActionProvider();
        mshare.setShareIntent(Share());
        return true;
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
        Mode = null;
    }

 public Intent Share() {
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_TEXT, "Share");
    return intent;
 }

}

Ну, контекстная панель действий открывается хорошо, когда я делаю длинный щелчок, но кнопка «Поделиться» на панели действий не работает. Когда я говорю «не работает», я имею в виду, что это не кликабельно. Ничего не работает, когда я нажимаю на элемент. Ничего не появляется. Чего я хочу, так это открыть несколько способов обмена. Спасибо


person Atlas91    schedule 07.05.2014    source источник


Ответы (1)


Когда я говорю «не работает», я имею в виду, что это не кликабельно

ActivityChooserView, возвращается представление действия ShareActionProvider, отключает кнопку "Поделиться" когда нет элементов для отображения, что в вашем случае, если вы настраиваете ShareActionProvider неправильно. Все события «по клику» обрабатываются внутри, вы не получите никаких обратных вызовов на ActionMode.Callback.onActionItemClicked.

Вместо того, чтобы настраивать его в ActionMode.Callback.onActionItemClicked, переместите этот код в ActionMode.Callback.onCreateActionMode и вызовите Menu.findItem для его инициализации.

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        mode.getMenuInflater().inflate(R.menu.cab, menu);

        final MenuItem item = menu.findItem(R.id.your_share_action_provider_id);
        mshare = (ShareActionProvider) item.getActionProvider();
        mshare.setShareIntent(Share());
        return true;
    }
person adneal    schedule 07.05.2014
comment
он по-прежнему не работает. Shareactionprovider не показывает параметры при использовании того же с панелью инструментов и v7 Actionprovider. можете ли вы обновить, что мы можем сделать, чтобы использовать то же самое с панелью инструментов и CAB - person user2779311; 24.01.2015