diff options
Diffstat (limited to 'samples/SupportLeanbackDemos/src/com/example/android/leanback/GuidedStepActivity.java')
-rw-r--r-- | samples/SupportLeanbackDemos/src/com/example/android/leanback/GuidedStepActivity.java | 135 |
1 files changed, 118 insertions, 17 deletions
diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/GuidedStepActivity.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/GuidedStepActivity.java index 1f9e96c8c..63149b444 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/GuidedStepActivity.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/GuidedStepActivity.java @@ -20,15 +20,19 @@ import android.app.Activity; import android.app.FragmentManager; import android.content.Context; import android.content.Intent; +import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v17.leanback.app.GuidedStepFragment; import android.support.v17.leanback.widget.GuidedAction; import android.support.v17.leanback.widget.GuidanceStylist; import android.support.v17.leanback.widget.GuidanceStylist.Guidance; +import android.text.TextUtils; +import android.util.Log; +import android.view.ViewGroup; +import android.view.ViewTreeObserver.OnGlobalLayoutListener; import java.util.List; -import java.util.ArrayList; /** * Activity that showcases different aspects of GuidedStepFragments. @@ -38,6 +42,10 @@ public class GuidedStepActivity extends Activity { private static final int CONTINUE = 1; private static final int BACK = 2; + private static final int FIRST_NAME = 3; + private static final int LAST_NAME = 4; + private static final int PAYMENT = 5; + private static final int OPTION_CHECK_SET_ID = 10; private static final int DEFAULT_OPTION = 0; private static final String[] OPTION_NAMES = { "Option A", "Option B", "Option C" }; @@ -46,10 +54,31 @@ public class GuidedStepActivity extends Activity { private static final int[] OPTION_DRAWABLES = { R.drawable.ic_guidedstep_option_a, R.drawable.ic_guidedstep_option_b, R.drawable.ic_guidedstep_option_c }; + private static final String TAG = GuidedStepActivity.class.getSimpleName(); + @Override protected void onCreate(Bundle savedInstanceState) { + Log.v(TAG, "onCreate"); super.onCreate(savedInstanceState); - GuidedStepFragment.add(getFragmentManager(), new FirstStepFragment()); + GuidedStepFragment.addAsRoot(this, new FirstStepFragment(), android.R.id.content); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + Log.v(TAG, "onConfigurationChanged"); + super.onConfigurationChanged(newConfig); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + Log.v(TAG, "onSaveInstanceState"); + super.onSaveInstanceState(outState); + } + + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + Log.v(TAG, "onRestoreInstanceState"); + super.onRestoreInstanceState(savedInstanceState); } private static void addAction(List<GuidedAction> actions, long id, String title, String desc) { @@ -60,6 +89,26 @@ public class GuidedStepActivity extends Activity { .build()); } + private static void addEditableAction(List<GuidedAction> actions, long id, String title, String desc) { + actions.add(new GuidedAction.Builder() + .id(id) + .title(title) + .description(desc) + .editable(true) + .build()); + } + + private static void addEditableAction(List<GuidedAction> actions, long id, String title, + String editTitle, String desc) { + actions.add(new GuidedAction.Builder() + .id(id) + .title(title) + .editTitle(editTitle) + .description(desc) + .editable(true) + .build()); + } + private static void addCheckedAction(List<GuidedAction> actions, int iconResId, Context context, String title, String desc) { actions.add(new GuidedAction.Builder() @@ -70,9 +119,6 @@ public class GuidedStepActivity extends Activity { .build()); } - /** - * The first fragment is instantiated via XML, so it must be public. - */ public static class FirstStepFragment extends GuidedStepFragment { @Override public int onProvideTheme() { @@ -98,16 +144,19 @@ public class GuidedStepActivity extends Activity { public void onGuidedActionClicked(GuidedAction action) { FragmentManager fm = getFragmentManager(); if (action.getId() == CONTINUE) { - GuidedStepFragment.add(fm, new SecondStepFragment()); + GuidedStepFragment.add(fm, new SecondStepFragment(), android.R.id.content); } else { getActivity().finish(); } } - } - private static class SecondStepFragment extends GuidedStepFragment { + @Override + protected int getContainerIdForBackground() { + return R.id.lb_guidedstep_background; + } + } - private int mSelectedOption = DEFAULT_OPTION; + public static class SecondStepFragment extends GuidedStepFragment { @Override public Guidance onCreateGuidance(Bundle savedInstanceState) { @@ -119,6 +168,49 @@ public class GuidedStepActivity extends Activity { } @Override + public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) { + addEditableAction(actions, FIRST_NAME, "Pat", "Your first name"); + addEditableAction(actions, LAST_NAME, "Smith", "Your last name"); + addEditableAction(actions, PAYMENT, "Payment", "", "Input credit card number"); + addAction(actions, CONTINUE, "Continue", "Continue"); + } + + @Override + public void onGuidedActionClicked(GuidedAction action) { + if (action.getId() == CONTINUE) { + FragmentManager fm = getFragmentManager(); + GuidedStepFragment.add(fm, new ThirdStepFragment()); + } + } + + @Override + public void onGuidedActionEdited(GuidedAction action) { + CharSequence editTitle = action.getEditTitle(); + if (TextUtils.isDigitsOnly(editTitle) && editTitle.length() == 16) { + editTitle = editTitle.subSequence(editTitle.length() - 4, editTitle.length()); + action.setDescription("Visa XXXX-XXXX-XXXX-"+editTitle); + } else if (editTitle.length() == 0){ + action.setDescription("Input credit card number"); + } else { + action.setDescription("Error credit card number"); + } + } + } + + public static class ThirdStepFragment extends GuidedStepFragment { + + private int mSelectedOption = DEFAULT_OPTION; + + @Override + public Guidance onCreateGuidance(Bundle savedInstanceState) { + String title = getString(R.string.guidedstep_third_title); + String breadcrumb = getString(R.string.guidedstep_third_breadcrumb); + String description = getString(R.string.guidedstep_third_description); + Drawable icon = getActivity().getDrawable(R.drawable.ic_main_icon); + return new Guidance(title, description, breadcrumb, icon); + } + + @Override public GuidanceStylist onCreateGuidanceStylist() { return new GuidanceStylist() { @Override @@ -153,7 +245,11 @@ public class GuidedStepActivity extends Activity { public void onGuidedActionClicked(GuidedAction action) { if (action.getId() == CONTINUE) { FragmentManager fm = getFragmentManager(); - GuidedStepFragment.add(fm, new ThirdStepFragment(mSelectedOption)); + FourthStepFragment f = new FourthStepFragment(); + Bundle arguments = new Bundle(); + arguments.putInt(FourthStepFragment.EXTRA_OPTION, mSelectedOption); + f.setArguments(arguments); + GuidedStepFragment.add(fm, f, android.R.id.content); } else { mSelectedOption = getSelectedActionPosition()-1; } @@ -161,18 +257,23 @@ public class GuidedStepActivity extends Activity { } - private static class ThirdStepFragment extends GuidedStepFragment { - private final int mOption; + public static class FourthStepFragment extends GuidedStepFragment { + public static final String EXTRA_OPTION = "extra_option"; - public ThirdStepFragment(int option) { - mOption = option; + public FourthStepFragment() { + } + + public int getOption() { + Bundle b = getArguments(); + if (b == null) return 0; + return b.getInt(EXTRA_OPTION, 0); } @Override public Guidance onCreateGuidance(Bundle savedInstanceState) { - String title = getString(R.string.guidedstep_third_title); - String breadcrumb = getString(R.string.guidedstep_third_breadcrumb); - String description = "You chose: " + OPTION_NAMES[mOption]; + String title = getString(R.string.guidedstep_fourth_title); + String breadcrumb = getString(R.string.guidedstep_fourth_breadcrumb); + String description = "You chose: " + OPTION_NAMES[getOption()]; Drawable icon = getActivity().getDrawable(R.drawable.ic_main_icon); return new Guidance(title, description, breadcrumb, icon); } |