diff options
Diffstat (limited to 'common/src/com/android/tv/common/ui/setup/SetupActionHelper.java')
-rw-r--r-- | common/src/com/android/tv/common/ui/setup/SetupActionHelper.java | 57 |
1 files changed, 36 insertions, 21 deletions
diff --git a/common/src/com/android/tv/common/ui/setup/SetupActionHelper.java b/common/src/com/android/tv/common/ui/setup/SetupActionHelper.java index 0f44ce06..7ee06faf 100644 --- a/common/src/com/android/tv/common/ui/setup/SetupActionHelper.java +++ b/common/src/com/android/tv/common/ui/setup/SetupActionHelper.java @@ -17,6 +17,8 @@ package com.android.tv.common.ui.setup; import android.app.Fragment; +import android.os.Bundle; +import android.util.Log; import android.view.View; import android.view.View.OnClickListener; @@ -24,47 +26,60 @@ import android.view.View.OnClickListener; * Helper class for the execution in the fragment. */ public class SetupActionHelper { + private static final String TAG = "SetupActionHelper"; + /** - * Executes the action of the given {@code actionId}. + * Executes the action. */ - public static void onActionClick(Fragment fragment, String category, int actionId) { - OnActionClickListener listener = null; - if (fragment instanceof SetupFragment) { - listener = ((SetupFragment) fragment).getOnActionClickListener(); - } - if (listener == null && fragment.getActivity() instanceof OnActionClickListener) { - listener = (OnActionClickListener) fragment.getActivity(); - } - if (listener != null) { - listener.onActionClick(category, actionId); + public static boolean onActionClick(Fragment fragment, String category, int actionId) { + return onActionClick(fragment, category, actionId, null); + } + + /** + * Executes the action. + */ + public static boolean onActionClick(Fragment fragment, String category, int actionId, + Bundle params) { + if (fragment.getActivity() instanceof OnActionClickListener) { + return ((OnActionClickListener) fragment.getActivity()).onActionClick(category, + actionId, params); } + Log.e(TAG, "Activity can't handle the action: {category=" + category + ", actionId=" + + actionId + ", params=" + params + "}"); + return false; } /** * Creates an {@link OnClickListener} to handle the action. */ - public static OnClickListener createOnClickListenerForAction(OnActionClickListener listener, - String category, int actionId) { - return new OnActionClickListenerForAction(listener, category, actionId); + public static OnClickListener createOnClickListenerForAction(Fragment fragment, String category, + int actionId, Bundle params) { + return new OnActionClickListenerForAction(fragment, category, actionId, params); } + /** + * The {@link OnClickListener} for the view. + * <p> + * Note that this class should be used only for the views in the {@code mFragment} to avoid the + * leak of mFragment. + */ private static class OnActionClickListenerForAction implements OnClickListener { - private final OnActionClickListener mListener; + private final Fragment mFragment; private final String mCategory; private final int mActionId; + private final Bundle mParams; - OnActionClickListenerForAction(OnActionClickListener listener, String category, - int actionId) { - mListener = listener; + OnActionClickListenerForAction(Fragment fragment, String category, int actionId, + Bundle params) { + mFragment = fragment; mCategory = category; mActionId = actionId; + mParams = params; } @Override public void onClick(View v) { - if (mListener != null) { - mListener.onActionClick(mCategory, mActionId); - } + SetupActionHelper.onActionClick(mFragment, mCategory, mActionId, mParams); } } |