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