aboutsummaryrefslogtreecommitdiff
path: root/common/src/com/android/tv/common/ui/setup/SetupActionHelper.java
diff options
context:
space:
mode:
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.java57
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);
}
}