From effa303688df75ed75ac1099460d5eab0d744411 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Fri, 20 Aug 2010 18:29:02 -0700 Subject: [PATCH] Update fragment dialog samples. - Follow API changes. - Clean up and mark up for inclusion as sample code. - New sample that shows a DialogFragment used as both a dialog and embedded in an activity. Change-Id: Icaa41283562f4f345b188442ef988c9d5edd8ed1 --- samples/ApiDemos/AndroidManifest.xml | 8 ++ .../layout/fragment_dialog_or_activity.xml | 62 ++++++++++++++ samples/ApiDemos/res/values/strings.xml | 6 ++ .../android/apis/app/FragmentAlertDialog.java | 6 +- .../android/apis/app/FragmentDialog.java | 7 +- .../apis/app/FragmentDialogOrActivity.java | 82 +++++++++++++++++++ 6 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 samples/ApiDemos/res/layout/fragment_dialog_or_activity.xml create mode 100644 samples/ApiDemos/src/com/example/android/apis/app/FragmentDialogOrActivity.java diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml index f4cbc08dc..1ebc3ee9f 100644 --- a/samples/ApiDemos/AndroidManifest.xml +++ b/samples/ApiDemos/AndroidManifest.xml @@ -243,6 +243,14 @@ + + + + + + + diff --git a/samples/ApiDemos/res/layout/fragment_dialog_or_activity.xml b/samples/ApiDemos/res/layout/fragment_dialog_or_activity.xml new file mode 100644 index 000000000..eb95e14b9 --- /dev/null +++ b/samples/ApiDemos/res/layout/fragment_dialog_or_activity.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml index 265f9dd9e..9558cdf20 100644 --- a/samples/ApiDemos/res/values/strings.xml +++ b/samples/ApiDemos/res/values/strings.xml @@ -95,6 +95,12 @@ App/Fragment/Dialog Show + App/Fragment/Dialog or Activity + Demonstrates the same fragment + being shown as a dialog and embedded inside of an activity. + Fragment embedded inside + of the activity: + App/Fragment/Layout App/Fragment/List Array diff --git a/samples/ApiDemos/src/com/example/android/apis/app/FragmentAlertDialog.java b/samples/ApiDemos/src/com/example/android/apis/app/FragmentAlertDialog.java index 19fd06ae8..abf9731d8 100644 --- a/samples/ApiDemos/src/com/example/android/apis/app/FragmentAlertDialog.java +++ b/samples/ApiDemos/src/com/example/android/apis/app/FragmentAlertDialog.java @@ -49,10 +49,11 @@ public class FragmentAlertDialog extends Activity { }); } +//BEGIN_INCLUDE(activity) void showDialog() { DialogFragment newFragment = MyAlertDialogFragment.newInstance( R.string.alert_dialog_two_buttons_title); - newFragment.show(this, "dialog"); + newFragment.show(getFragmentManager(), "dialog"); } public void doPositiveClick() { @@ -64,7 +65,9 @@ public class FragmentAlertDialog extends Activity { // Do stuff here. Log.i("FragmentAlertDialog", "Negative click!"); } +//END_INCLUDE(activity) +//BEGIN_INCLUDE(dialog) public static class MyAlertDialogFragment extends DialogFragment { public static MyAlertDialogFragment newInstance(int title) { @@ -99,4 +102,5 @@ public class FragmentAlertDialog extends Activity { .create(); } } +//END_INCLUDE(dialog) } 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 bdd1e72ee..bf9a7ea5b 100644 --- a/samples/ApiDemos/src/com/example/android/apis/app/FragmentDialog.java +++ b/samples/ApiDemos/src/com/example/android/apis/app/FragmentDialog.java @@ -63,6 +63,7 @@ public class FragmentDialog extends Activity { outState.putInt("level", mStackLevel); } +//BEGIN_INCLUDE(add_dialog) void showDialog() { mStackLevel++; @@ -78,8 +79,9 @@ public class FragmentDialog extends Activity { // Create and show the dialog. DialogFragment newFragment = MyDialogFragment.newInstance(mStackLevel); - newFragment.show(this, ft, "dialog"); + newFragment.show(ft, "dialog"); } +//END_INCLUDE(add_dialog) static String getNameForNum(int num) { switch ((num-1)%6) { @@ -93,6 +95,7 @@ public class FragmentDialog extends Activity { return "STYLE_NORMAL"; } +//BEGIN_INCLUDE(dialog) public static class MyDialogFragment extends DialogFragment { int mNum; @@ -144,6 +147,7 @@ public class FragmentDialog extends Activity { Button button = (Button)v.findViewById(R.id.show); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { + // When button is clicked, call up to owning activity. ((FragmentDialog)getActivity()).showDialog(); } }); @@ -151,4 +155,5 @@ public class FragmentDialog extends Activity { return v; } } +//END_INCLUDE(dialog) } diff --git a/samples/ApiDemos/src/com/example/android/apis/app/FragmentDialogOrActivity.java b/samples/ApiDemos/src/com/example/android/apis/app/FragmentDialogOrActivity.java new file mode 100644 index 000000000..c4d2c0002 --- /dev/null +++ b/samples/ApiDemos/src/com/example/android/apis/app/FragmentDialogOrActivity.java @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.apis.app; + +import com.example.android.apis.R; + +import android.app.Activity; +import android.app.DialogFragment; +import android.app.Fragment; +import android.app.FragmentTransaction; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.TextView; + +public class FragmentDialogOrActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.fragment_dialog_or_activity); + + if (savedInstanceState == null) { + // First-time init; create fragment to embed in activity. +//BEGIN_INCLUDE(embed) + FragmentTransaction ft = getFragmentManager().openTransaction(); + DialogFragment newFragment = MyDialogFragment.newInstance(); + ft.add(R.id.embedded, newFragment); + ft.commit(); +//END_INCLUDE(embed) + } + + // Watch for button clicks. + Button button = (Button)findViewById(R.id.show_dialog); + button.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + showDialog(); + } + }); + } + +//BEGIN_INCLUDE(show_dialog) + void showDialog() { + // Create the fragment and show it as a dialog. + DialogFragment newFragment = MyDialogFragment.newInstance(); + newFragment.show(getFragmentManager(), "dialog"); + } +//END_INCLUDE(show_dialog) + +//BEGIN_INCLUDE(dialog) + public static class MyDialogFragment extends DialogFragment { + static MyDialogFragment newInstance() { + return new MyDialogFragment(); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.hello_world, container, false); + View tv = v.findViewById(R.id.text); + ((TextView)tv).setText("This is an instance of MyDialogFragment"); + return v; + } + } +//END_INCLUDE(dialog) +}