1cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn/*
2cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn * Copyright (C) 2010 The Android Open Source Project
3cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn *
4cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License");
5cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn * you may not use this file except in compliance with the License.
6cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn * You may obtain a copy of the License at
7cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn *
8cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn *      http://www.apache.org/licenses/LICENSE-2.0
9cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn *
10cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn * Unless required by applicable law or agreed to in writing, software
11cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS,
12cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn * See the License for the specific language governing permissions and
14cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn * limitations under the License.
15cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn */
16cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn
17cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornpackage com.example.android.apis.app;
18cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn
19cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornimport com.example.android.apis.R;
20cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn
21cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornimport android.app.Activity;
22cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornimport android.app.AlertDialog;
23cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornimport android.app.Dialog;
24cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornimport android.app.DialogFragment;
25cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornimport android.content.DialogInterface;
26cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornimport android.os.Bundle;
279e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackbornimport android.util.Log;
28cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornimport android.view.View;
29cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornimport android.view.View.OnClickListener;
30cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornimport android.widget.Button;
31cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornimport android.widget.TextView;
32cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn
338ab4ac232b11ee3eb1130790fdee480a0563bf6eDianne Hackborn/**
348ab4ac232b11ee3eb1130790fdee480a0563bf6eDianne Hackborn * Demonstrates how to show an AlertDialog that is managed by a Fragment.
358ab4ac232b11ee3eb1130790fdee480a0563bf6eDianne Hackborn */
36cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackbornpublic class FragmentAlertDialog extends Activity {
3745ae9c3def3e67e866172b4dd8ae10cf759f77abAndrew Stadler
38cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn    @Override
39cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn    protected void onCreate(Bundle savedInstanceState) {
40cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn        super.onCreate(savedInstanceState);
41cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn        setContentView(R.layout.fragment_dialog);
42cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn
43cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn        View tv = findViewById(R.id.text);
44cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn        ((TextView)tv).setText("Example of displaying an alert dialog with a DialogFragment");
45cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn
46cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn        // Watch for button clicks.
47cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn        Button button = (Button)findViewById(R.id.show);
48cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn        button.setOnClickListener(new OnClickListener() {
49cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn            public void onClick(View v) {
50cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn                showDialog();
51cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn            }
52cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn        });
53cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn    }
54cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn
55effa303688df75ed75ac1099460d5eab0d744411Dianne Hackborn//BEGIN_INCLUDE(activity)
56cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn    void showDialog() {
579e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn        DialogFragment newFragment = MyAlertDialogFragment.newInstance(
589e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn                R.string.alert_dialog_two_buttons_title);
59effa303688df75ed75ac1099460d5eab0d744411Dianne Hackborn        newFragment.show(getFragmentManager(), "dialog");
60cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn    }
61cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn
629e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn    public void doPositiveClick() {
639e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn        // Do stuff here.
649e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn        Log.i("FragmentAlertDialog", "Positive click!");
659e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn    }
669e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn
679e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn    public void doNegativeClick() {
689e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn        // Do stuff here.
699e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn        Log.i("FragmentAlertDialog", "Negative click!");
709e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn    }
71effa303688df75ed75ac1099460d5eab0d744411Dianne Hackborn//END_INCLUDE(activity)
729e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn
73effa303688df75ed75ac1099460d5eab0d744411Dianne Hackborn//BEGIN_INCLUDE(dialog)
74cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn    public static class MyAlertDialogFragment extends DialogFragment {
7545ae9c3def3e67e866172b4dd8ae10cf759f77abAndrew Stadler
769e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn        public static MyAlertDialogFragment newInstance(int title) {
779e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn            MyAlertDialogFragment frag = new MyAlertDialogFragment();
789e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn            Bundle args = new Bundle();
799e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn            args.putInt("title", title);
809e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn            frag.setArguments(args);
819e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn            return frag;
829e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn        }
839e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn
84cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn        @Override
85cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn        public Dialog onCreateDialog(Bundle savedInstanceState) {
869e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn            int title = getArguments().getInt("title");
879e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn
88cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn            return new AlertDialog.Builder(getActivity())
89cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn                    .setIcon(R.drawable.alert_dialog_icon)
909e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn                    .setTitle(title)
9145ae9c3def3e67e866172b4dd8ae10cf759f77abAndrew Stadler                    .setPositiveButton(R.string.alert_dialog_ok,
9245ae9c3def3e67e866172b4dd8ae10cf759f77abAndrew Stadler                        new DialogInterface.OnClickListener() {
9345ae9c3def3e67e866172b4dd8ae10cf759f77abAndrew Stadler                            public void onClick(DialogInterface dialog, int whichButton) {
949e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn                                ((FragmentAlertDialog)getActivity()).doPositiveClick();
9545ae9c3def3e67e866172b4dd8ae10cf759f77abAndrew Stadler                            }
96cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn                        }
9745ae9c3def3e67e866172b4dd8ae10cf759f77abAndrew Stadler                    )
9845ae9c3def3e67e866172b4dd8ae10cf759f77abAndrew Stadler                    .setNegativeButton(R.string.alert_dialog_cancel,
9945ae9c3def3e67e866172b4dd8ae10cf759f77abAndrew Stadler                        new DialogInterface.OnClickListener() {
10045ae9c3def3e67e866172b4dd8ae10cf759f77abAndrew Stadler                            public void onClick(DialogInterface dialog, int whichButton) {
1019e6f12a598dad51da2afc4128e4f6d50b827cfbeDianne Hackborn                                ((FragmentAlertDialog)getActivity()).doNegativeClick();
10245ae9c3def3e67e866172b4dd8ae10cf759f77abAndrew Stadler                            }
103cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn                        }
10445ae9c3def3e67e866172b4dd8ae10cf759f77abAndrew Stadler                    )
105cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn                    .create();
106cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn        }
107cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn    }
108effa303688df75ed75ac1099460d5eab0d744411Dianne Hackborn//END_INCLUDE(dialog)
109cdb8af8170016e68a72a0e6eab5aa4fedd59ca25Dianne Hackborn}
110