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