2014-06-12 2 views
1

Android 앱에 약간의 문제가 있습니다. 나는 onCreateOptionsMenu를 사용하여 표준 메뉴를 만들고있다. 내 메뉴 요소 중 하나는 공유 버튼입니다. 이 공유 요소는 OnShareTargetSelectedListener를 사용하여 클릭 한 공유 옵션을 차단합니다.사용자가 ShareActionProvider에서 메뉴 항목을 선택하면 감지하는 방법?

문제는 - 나는 사용자가이 '공유'메뉴 항목을 클릭하면 알 필요 ("페이스 북"같은 모든 공유 옵션과 하위 요소를 공유하지, "블루투스", "이메일"등). onMenuItemSelected에는 "공유"를 클릭 할 때 호출이 없습니다.

이 "공유"메뉴 요소의 클릭 이벤트를 가로 챌 수있는 우아한 방법이 있나요?

+0

좋아, 여기에 솔루션 : subUiVisibilityChanged를 오버라이드 (override), ShareActionProvider을 확장, 새로운 리스너를 추가 : –

답변

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; 
} 
} 

당신의 액티비티 또는 프래그먼트를 사용하려면 표준 ShareActionProvider 대신 CustomShareActionProvider를 사용하고 ShareMenuListener 인터페이스를 구현하십시오. 사용자 지정 작업을 수행 할 수 onMenuVisibilityChanged 메소드를 구현 :

@Override 
public void onMenuVisibilityChanged(boolean visible) { 
    if(visible) { 
     // Do your custom action here 
    } 
} 
관련 문제