Update API demos to use new Fragment features.
In particular, use the new argument Bundle for passing runtime
data to fragments. Simplifies the code some.
Change-Id: I248bfa0bf94b1599926038174baa4c7387ed8ba1
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/FragmentDialog.java b/samples/ApiDemos/src/com/example/android/apis/app/FragmentDialog.java
index cbca469..055bb70 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/FragmentDialog.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/FragmentDialog.java
@@ -65,35 +65,22 @@
void showDialog() {
mStackLevel++;
- DialogFragment newFragment = new MyDialogFragment(mStackLevel);
+
+ // DialogFragment.show() will take care of adding the fragment
+ // in a transaction. We also want to remove any currently showing
+ // dialog, so make our own transaction and take care of that here.
FragmentTransaction ft = openFragmentTransaction();
Fragment prev = findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
+
+ // Create and show the dialog.
+ DialogFragment newFragment = MyDialogFragment.newInstance(mStackLevel);
newFragment.show(this, ft, "dialog");
}
- static int getStyleForNum(int num) {
- switch ((num-1)%6) {
- case 1: return DialogFragment.STYLE_NO_TITLE;
- case 2: return DialogFragment.STYLE_NO_FRAME;
- case 3: return DialogFragment.STYLE_NO_INPUT;
- case 4: return DialogFragment.STYLE_NORMAL;
- case 5: return DialogFragment.STYLE_NORMAL;
- }
- return DialogFragment.STYLE_NORMAL;
- }
-
- static int getThemeForNum(int num) {
- switch ((num-1)%6) {
- case 4: return android.R.style.Theme_Light;
- case 5: return android.R.style.Theme;
- }
- return 0;
- }
-
static String getNameForNum(int num) {
switch ((num-1)%6) {
case 1: return "STYLE_NO_TITLE";
@@ -109,27 +96,40 @@
public static class MyDialogFragment extends DialogFragment {
int mNum;
- public MyDialogFragment() {
- mNum = -1;
- }
+ /**
+ * Create a new instance of MyDialogFragment, providing "num"
+ * as an argument.
+ */
+ static MyDialogFragment newInstance(int num) {
+ MyDialogFragment f = new MyDialogFragment();
- public MyDialogFragment(int num) {
- super(getStyleForNum(num), getThemeForNum(num));
- mNum = num;
- }
+ // Supply num input as an argument.
+ Bundle args = new Bundle();
+ args.putInt("num", num);
+ f.setArguments(args);
+ return f;
+ }
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (savedInstanceState != null) {
- mNum = savedInstanceState.getInt("num");
- }
- }
+ mNum = getArguments().getInt("num");
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putInt("num", mNum);
+ // Pick a style based on the num.
+ int style = DialogFragment.STYLE_NORMAL, theme = 0;
+ switch ((mNum-1)%6) {
+ case 1: style = DialogFragment.STYLE_NO_TITLE; break;
+ case 2: style = DialogFragment.STYLE_NO_FRAME; break;
+ case 3: style = DialogFragment.STYLE_NO_INPUT; break;
+ case 4: style = DialogFragment.STYLE_NORMAL; break;
+ case 5: style = DialogFragment.STYLE_NORMAL; break;
+ }
+ switch ((mNum-1)%6) {
+ case 4: theme = android.R.style.Theme_Light; break;
+ case 5: theme = android.R.style.Theme; break;
+ }
+ setStyle(style, theme);
}
@Override
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/FragmentStack.java b/samples/ApiDemos/src/com/example/android/apis/app/FragmentStack.java
index 6440cbd..cdb1c4e 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/FragmentStack.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/FragmentStack.java
@@ -47,7 +47,7 @@
if (savedInstanceState == null) {
// Do first time initialization -- add initial fragment.
- Fragment newFragment = new CountingFragment(mStackLevel);
+ Fragment newFragment = CountingFragment.newInstance(mStackLevel);
FragmentTransaction ft = openFragmentTransaction();
ft.add(R.id.simple_fragment, newFragment).commit();
} else {
@@ -63,7 +63,12 @@
void addFragmentToStack() {
mStackLevel++;
- Fragment newFragment = new CountingFragment(mStackLevel);
+
+ // Instantiate a new fragment.
+ Fragment newFragment = CountingFragment.newInstance(mStackLevel);
+
+ // Add the fragment to the activity, pushing this transaction
+ // on to the back stack.
FragmentTransaction ft = openFragmentTransaction();
ft.replace(R.id.simple_fragment, newFragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
@@ -74,26 +79,25 @@
public static class CountingFragment extends Fragment {
int mNum;
- public CountingFragment() {
- mNum = -1;
- }
+ /**
+ * Create a new instance of CountingFragment, providing "num"
+ * as an argument.
+ */
+ static CountingFragment newInstance(int num) {
+ CountingFragment f = new CountingFragment();
- public CountingFragment(int num) {
- mNum = num;
+ // Supply num input as an argument.
+ Bundle args = new Bundle();
+ args.putInt("num", num);
+ f.setArguments(args);
+
+ return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (savedInstanceState != null) {
- mNum = savedInstanceState.getInt("num");
- }
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putInt("num", mNum);
+ mNum = getArguments().getInt("num");
}
@Override