Java tutorial
package android.support.v4.view; import android.content.Context; import android.util.Log; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; public abstract class ActionProvider { private static final String TAG = "ActionProvider(support)"; private final Context mContext; private SubUiVisibilityListener mSubUiVisibilityListener; private VisibilityListener mVisibilityListener; public interface SubUiVisibilityListener { void onSubUiVisibilityChanged(boolean z); } public interface VisibilityListener { void onActionProviderVisibilityChanged(boolean z); } public abstract View onCreateActionView(); public ActionProvider(Context context) { this.mContext = context; } public Context getContext() { return this.mContext; } public View onCreateActionView(MenuItem menuItem) { return onCreateActionView(); } public boolean overridesItemVisibility() { return false; } public boolean isVisible() { return true; } public void refreshVisibility() { if (this.mVisibilityListener != null && overridesItemVisibility()) { this.mVisibilityListener.onActionProviderVisibilityChanged(isVisible()); } } public boolean onPerformDefaultAction() { return false; } public boolean hasSubMenu() { return false; } public void onPrepareSubMenu(SubMenu subMenu) { } public void subUiVisibilityChanged(boolean z) { if (this.mSubUiVisibilityListener != null) { this.mSubUiVisibilityListener.onSubUiVisibilityChanged(z); } } public void setSubUiVisibilityListener(SubUiVisibilityListener subUiVisibilityListener) { this.mSubUiVisibilityListener = subUiVisibilityListener; } public void setVisibilityListener(VisibilityListener visibilityListener) { if (!(this.mVisibilityListener == null || visibilityListener == null)) { Log.w(TAG, "setVisibilityListener: Setting a new ActionProvider.VisibilityListener when one is already set. Are you reusing this " + getClass().getSimpleName() + " instance while it is still in use somewhere else?"); } this.mVisibilityListener = visibilityListener; } }