Споделете елемент в лентата за действие с помощта на контекстна лента за действие

За първи път използвам контекстната лента за действие. Когато щракна върху елемента от моя 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 не показва опциите, когато се използва същото с Toolbar и v7 Actionprovider. можете ли да актуализирате какво можем да направим, за да използваме същото с лентата с инструменти и CAB - person user2779311; 24.01.2015