19fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn/*
29fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn * Copyright (C) 2011 The Android Open Source Project
39fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn *
49fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License");
59fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn * you may not use this file except in compliance with the License.
69fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn * You may obtain a copy of the License at
79fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn *
89fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn *      http://www.apache.org/licenses/LICENSE-2.0
99fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn *
109fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn * Unless required by applicable law or agreed to in writing, software
119fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS,
129fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn * See the License for the specific language governing permissions and
149fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn * limitations under the License.
159fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn */
169fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
1710c33528e033643099783a5bc4eedb4b8a1e9a0eDianne Hackbornpackage com.example.android.supportv4.app;
189fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
1910c33528e033643099783a5bc4eedb4b8a1e9a0eDianne Hackbornimport com.example.android.supportv4.R;
209fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
219fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackbornimport android.support.v4.app.DialogFragment;
229fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackbornimport android.support.v4.app.FragmentActivity;
239fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
249fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackbornimport android.app.AlertDialog;
259fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackbornimport android.app.Dialog;
269fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackbornimport android.content.DialogInterface;
279fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackbornimport android.os.Bundle;
289fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackbornimport android.util.Log;
299fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackbornimport android.view.View;
309fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackbornimport android.view.View.OnClickListener;
319fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackbornimport android.widget.Button;
329fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackbornimport android.widget.TextView;
339fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
349fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn/**
359fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn * Demonstrates how to show an AlertDialog that is managed by a Fragment.
369fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn */
379fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackbornpublic class FragmentAlertDialogSupport extends FragmentActivity {
389fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
399fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn    @Override
409fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn    protected void onCreate(Bundle savedInstanceState) {
419fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        super.onCreate(savedInstanceState);
429fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        setContentView(R.layout.fragment_dialog);
439fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
449fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        View tv = findViewById(R.id.text);
459fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        ((TextView)tv).setText("Example of displaying an alert dialog with a DialogFragment");
469fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
479fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        // Watch for button clicks.
489fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        Button button = (Button)findViewById(R.id.show);
499fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        button.setOnClickListener(new OnClickListener() {
509fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn            public void onClick(View v) {
519fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                showDialog();
529fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn            }
539fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        });
549fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn    }
559fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
569fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn//BEGIN_INCLUDE(activity)
579fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn    void showDialog() {
589fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        DialogFragment newFragment = MyAlertDialogFragment.newInstance(
599fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                R.string.alert_dialog_two_buttons_title);
609fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        newFragment.show(getSupportFragmentManager(), "dialog");
619fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn    }
629fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
639fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn    public void doPositiveClick() {
649fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        // Do stuff here.
659fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        Log.i("FragmentAlertDialog", "Positive click!");
669fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn    }
679fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
689fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn    public void doNegativeClick() {
699fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        // Do stuff here.
709fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        Log.i("FragmentAlertDialog", "Negative click!");
719fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn    }
729fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn//END_INCLUDE(activity)
739fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
749fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn//BEGIN_INCLUDE(dialog)
759fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn    public static class MyAlertDialogFragment extends DialogFragment {
769fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
779fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        public static MyAlertDialogFragment newInstance(int title) {
789fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn            MyAlertDialogFragment frag = new MyAlertDialogFragment();
799fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn            Bundle args = new Bundle();
809fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn            args.putInt("title", title);
819fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn            frag.setArguments(args);
829fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn            return frag;
839fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        }
849fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
859fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        @Override
869fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        public Dialog onCreateDialog(Bundle savedInstanceState) {
879fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn            int title = getArguments().getInt("title");
889fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn
899fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn            return new AlertDialog.Builder(getActivity())
909fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                    .setIcon(R.drawable.alert_dialog_icon)
919fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                    .setTitle(title)
929fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                    .setPositiveButton(R.string.alert_dialog_ok,
939fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                        new DialogInterface.OnClickListener() {
949fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                            public void onClick(DialogInterface dialog, int whichButton) {
959fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                                ((FragmentAlertDialogSupport)getActivity()).doPositiveClick();
969fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                            }
979fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                        }
989fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                    )
999fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                    .setNegativeButton(R.string.alert_dialog_cancel,
1009fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                        new DialogInterface.OnClickListener() {
1019fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                            public void onClick(DialogInterface dialog, int whichButton) {
1029fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                                ((FragmentAlertDialogSupport)getActivity()).doNegativeClick();
1039fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                            }
1049fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                        }
1059fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                    )
1069fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn                    .create();
1079fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn        }
1089fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn    }
1099fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn//END_INCLUDE(dialog)
1109fd3b6e9933096ad992dcc2212fdce99ce80b597Dianne Hackborn}
111