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
This commit is contained in:
Dianne Hackborn
2010-08-20 18:29:02 -07:00
parent 434672af29
commit effa303688
6 changed files with 169 additions and 2 deletions

View File

@@ -243,6 +243,14 @@
</intent-filter>
</activity>
<activity android:name=".app.FragmentDialogOrActivity"
android:label="@string/fragment_dialog_or_activity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.SAMPLE_CODE" />
</intent-filter>
</activity>
<activity android:name=".app.FragmentLayout"
android:label="@string/fragment_layout">
<intent-filter>

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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.
-->
<!-- Top-level content view for the simple fragment sample. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:padding="4dip"
android:gravity="center_horizontal"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="top|center_horizontal"
android:text="@string/fragment_dialog_or_activity_msg" />
<Button android:id="@+id/show_dialog"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_weight="0"
android:text="@string/show">
<requestFocus />
</Button>
<View android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@+id/inline_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_gravity="center_vertical|center_horizontal"
android:text="@string/fragment_dialog_or_activity_inline" />
<FrameLayout
android:id="@+id/embedded"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_gravity="center_vertical|center_horizontal"
android:padding="6dp"
android:background="#ff303030"
android:gravity="top|center_horizontal" />
</LinearLayout>

View File

@@ -95,6 +95,12 @@
<string name="fragment_dialog">App/Fragment/Dialog</string>
<string name="show">Show</string>
<string name="fragment_dialog_or_activity">App/Fragment/Dialog or Activity</string>
<string name="fragment_dialog_or_activity_msg">Demonstrates the same fragment
being shown as a dialog and embedded inside of an activity.</string>
<string name="fragment_dialog_or_activity_inline">Fragment embedded inside
of the activity:</string>
<string name="fragment_layout">App/Fragment/Layout</string>
<string name="fragment_list_array">App/Fragment/List Array</string>

View File

@@ -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)
}

View File

@@ -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)
}

View File

@@ -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)
}