2014-06-12 3 views
1

У меня небольшая проблема с моим Android-приложением. Я создаю стандартное меню (используя onCreateOptionsMenu). Один из моих элементов меню - кнопка совместного доступа. Этот элемент share использует OnShareTargetSelectedListener, чтобы перехватить, какие из параметров совместного доступа будут нажаты.Как определить, когда пользователь выбирает пункт меню с помощью ShareActionProvider?

Проблема: мне нужно знать, будет ли пользователь щелкать этот пункт меню «общий доступ» (не разделять подэлемент со всеми параметрами общего доступа, такими как «Facebook», «Bluetooth», «Электронная почта» и т. Д.). В onMenuItemSelected нет вызова при нажатии «share».

Есть ли какой-либо изящный способ перехватить этот «общий» элемент меню?

+0

Хорошо, вот решение: продлить ShareActionProvider, переопределить subUiVisibilityChanged и добавить новый слушатель: –

ответ

1

Хорошо, вот решение: добавить новый интерфейс слушателя (ShareMenuListener.java):

public interface ShareMenuListener { 
    public void onMenuVisibilityChanged(boolean visible); 

}

Продлить ShareActionProvider (CustomShareActionProvider.java)

public class CustomShareActionProvider extends ShareActionProvider { 

private ShareMenuListener mListener; 

public CustomShareActionProvider(Context context) { 
    super(context); 
} 

@Override 
public void subUiVisibilityChanged(boolean isVisible) { 
    super.subUiVisibilityChanged(isVisible); 
    mListener.onMenuVisibilityChanged(isVisible); 
} 

public void setShareMenuListener(ShareMenuListener listener) { 
    mListener = listener; 
} 
} 

Тогда в вашем активности или фрагмента, используйте CustomShareActionProvider вместо стандартного ShareActionProvider и реализуйте интерфейс ShareMenuListener. Реализовать onMenuVisibilityChanged метода для выполнения пользовательских действий:

@Override 
public void onMenuVisibilityChanged(boolean visible) { 
    if(visible) { 
     // Do your custom action here 
    } 
} 
Смежные вопросы