19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.app; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powellimport com.android.internal.app.AlertController; 20c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell 217b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbyeimport android.annotation.ArrayRes; 227b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbyeimport android.annotation.AttrRes; 237b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbyeimport android.annotation.DrawableRes; 247b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbyeimport android.annotation.StringRes; 25682a433d0b8ff3e4e0ffc8d2cfedc8907ab1e83bAlan Viveretteimport android.annotation.StyleRes; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.DialogInterface; 289553fb3240f6d2e52012f94fb59271348a07b94dAdam Lesinskiimport android.content.res.ResourceId; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.Cursor; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.drawable.Drawable; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Message; 332fbf4de64f0ec5052201cea9519c44d5b1789a40Adam Powellimport android.util.TypedValue; 34c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powellimport android.view.ContextThemeWrapper; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.KeyEvent; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.WindowManager; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.AdapterView; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.Button; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.ListAdapter; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.ListView; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viveretteimport com.android.internal.R; 4449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A subclass of Dialog that can display one, two or three buttons. If you only want to 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * display a String in this dialog box, use the setMessage() method. If you 48c9006872800fceb1a5fef5e8f0470eb79953e79aAdam Powell * want to display a more complex view, look up the FrameLayout called "custom" 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and add your view to it: 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <pre> 5251efddbd3bb304de2dd47fa8cd1114ac555958bbAlan Viverette * FrameLayout fl = findViewById(android.R.id.custom); 53c9006872800fceb1a5fef5e8f0470eb79953e79aAdam Powell * fl.addView(myView, new LayoutParams(MATCH_PARENT, WRAP_CONTENT)); 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * </pre> 5549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>The AlertDialog class takes care of automatically setting 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link WindowManager.LayoutParams#FLAG_ALT_FOCUSABLE_IM 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM} for you based on whether 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any views in the dialog return true from {@link View#onCheckIsTextEditor() 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * View.onCheckIsTextEditor()}. Generally you want this set for a Dialog 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * without text editors, so that it will be placed on top of the current 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * input method UI. You can modify this behavior by forcing the flag to your 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * desired mode after calling {@link #onCreate}. 64558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * 65558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * <div class="special reference"> 66558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * <h3>Developer Guides</h3> 67558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * <p>For more information about creating dialogs, read the 68558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * <a href="{@docRoot}guide/topics/ui/dialogs.html">Dialogs</a> developer guide.</p> 69558459fe85f56f29a6ed6a4d0adb4a0bd6665884Joe Fernandez * </div> 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class AlertDialog extends Dialog implements DialogInterface { 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private AlertController mAlert; 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 74e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn /** 75e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * Special theme constant for {@link #AlertDialog(Context, int)}: use 76e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * the traditional (pre-Holo) alert dialog theme. 7749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 7849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @deprecated Use {@link android.R.style#Theme_Material_Dialog_Alert}. 79e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn */ 8049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette @Deprecated 81e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn public static final int THEME_TRADITIONAL = 1; 8249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 83e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn /** 84e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * Special theme constant for {@link #AlertDialog(Context, int)}: use 85e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * the holographic alert theme with a dark background. 8649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 8749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @deprecated Use {@link android.R.style#Theme_Material_Dialog_Alert}. 88e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn */ 8949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette @Deprecated 90e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn public static final int THEME_HOLO_DARK = 2; 9149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 92e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn /** 93e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * Special theme constant for {@link #AlertDialog(Context, int)}: use 94e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn * the holographic alert theme with a light background. 9549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 9649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @deprecated Use {@link android.R.style#Theme_Material_Light_Dialog_Alert}. 97e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn */ 9849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette @Deprecated 99e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn public static final int THEME_HOLO_LIGHT = 3; 1006e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell 1016e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell /** 1026e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell * Special theme constant for {@link #AlertDialog(Context, int)}: use 1036e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell * the device's default alert theme with a dark background. 10449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 10549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @deprecated Use {@link android.R.style#Theme_DeviceDefault_Dialog_Alert}. 1066e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell */ 10749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette @Deprecated 1086e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell public static final int THEME_DEVICE_DEFAULT_DARK = 4; 1096e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell 1106e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell /** 1116e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell * Special theme constant for {@link #AlertDialog(Context, int)}: use 1127ed189e457b16c06b0425bd28aeeb1df5c8ff5b8Scott Kennedy * the device's default alert theme with a light background. 11349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 11449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @deprecated Use {@link android.R.style#Theme_DeviceDefault_Light_Dialog_Alert}. 1156e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell */ 11649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette @Deprecated 1176e90a362bc66cc67b1beae27b21d3f0148403b08Adam Powell public static final int THEME_DEVICE_DEFAULT_LIGHT = 5; 1184c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout 1194c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout /** 1204c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout * No layout hint. 1214c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout * @hide 1224c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout */ 1234c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout public static final int LAYOUT_HINT_NONE = 0; 1244c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout 1254c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout /** 1264c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout * Hint layout to the side. 1274c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout * @hide 1284c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout */ 1294c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout public static final int LAYOUT_HINT_SIDE = 1; 13049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 13149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette /** 13249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Creates an alert dialog that uses the default alert dialog theme. 13349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 13449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * The default alert dialog theme is defined by 13549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@link android.R.attr#alertDialogTheme} within the parent 13649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@code context}'s theme. 13749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 13849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param context the parent context 1395696f045901a63769bf7c293a379e7a5ee06449bAlan Viverette * @see android.R.styleable#Theme_alertDialogTheme 14049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette */ 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected AlertDialog(Context context) { 14249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette this(context, 0); 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 145e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn /** 14649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Creates an alert dialog that uses the default alert dialog theme and a 14749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * custom cancel listener. 14849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 14949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * This is functionally identical to: 15049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <pre> 15149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * AlertDialog dialog = new AlertDialog(context); 15249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * alertDialog.setCancelable(cancelable); 15349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * alertDialog.setOnCancelListener(cancelListener); 15449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * </pre> 15549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 15649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * The default alert dialog theme is defined by 15749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@link android.R.attr#alertDialogTheme} within the parent 15849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@code context}'s theme. 15949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 16049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param context the parent context 1615696f045901a63769bf7c293a379e7a5ee06449bAlan Viverette * @see android.R.styleable#Theme_alertDialogTheme 162e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn */ 16349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette protected AlertDialog(Context context, boolean cancelable, OnCancelListener cancelListener) { 16449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette this(context, 0); 16549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 16649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette setCancelable(cancelable); 16749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette setOnCancelListener(cancelListener); 168e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn } 169e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn 17049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette /** 17149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Creates an alert dialog that uses an explicit theme resource. 17249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 17349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * The specified theme resource ({@code themeResId}) is applied on top of 17449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * the parent {@code context}'s theme. It may be specified as a style 17549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * resource containing a fully-populated theme, such as 17649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@link android.R.style#Theme_Material_Dialog}, to replace all attributes 17749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * in the parent {@code context}'s theme including primary and accent 17849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * colors. 17949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 18049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * To preserve attributes such as primary and accent colors, the 18149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@code themeResId} may instead be specified as an overlay theme such as 18249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@link android.R.style#ThemeOverlay_Material_Dialog}. This will override 18349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * only the window attributes necessary to style the alert window as a 18449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * dialog. 18549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 18649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Alternatively, the {@code themeResId} may be specified as {@code 0} to 18749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * use the parent {@code context}'s resolved value for 18849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@link android.R.attr#alertDialogTheme}. 18949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 19049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param context the parent context 19149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param themeResId the resource ID of the theme against which to inflate 19249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * this dialog, or {@code 0} to use the parent 19349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@code context}'s default alert dialog theme 1945696f045901a63769bf7c293a379e7a5ee06449bAlan Viverette * @see android.R.styleable#Theme_alertDialogTheme 19549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette */ 196682a433d0b8ff3e4e0ffc8d2cfedc8907ab1e83bAlan Viverette protected AlertDialog(Context context, @StyleRes int themeResId) { 1975696f045901a63769bf7c293a379e7a5ee06449bAlan Viverette this(context, themeResId, true); 1985696f045901a63769bf7c293a379e7a5ee06449bAlan Viverette } 1995696f045901a63769bf7c293a379e7a5ee06449bAlan Viverette 200682a433d0b8ff3e4e0ffc8d2cfedc8907ab1e83bAlan Viverette AlertDialog(Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) { 2015696f045901a63769bf7c293a379e7a5ee06449bAlan Viverette super(context, createContextThemeWrapper ? resolveDialogTheme(context, themeResId) : 0, 2025696f045901a63769bf7c293a379e7a5ee06449bAlan Viverette createContextThemeWrapper); 203a492c3a7b2c18426fd0cb4d017eacbc368195dc5Jeff Brown 204cfaf8878de83b6bb7a24aee3c240259f428e6e4aDianne Hackborn mWindow.alwaysReadCloseOnTouchAttr(); 205cc6e6f0e0a556bc1dd80faa7155138c9cdaac7fcMichael Kwan mAlert = AlertController.create(getContext(), this, getWindow()); 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2089553fb3240f6d2e52012f94fb59271348a07b94dAdam Lesinski static @StyleRes int resolveDialogTheme(Context context, @StyleRes int themeResId) { 209682a433d0b8ff3e4e0ffc8d2cfedc8907ab1e83bAlan Viverette if (themeResId == THEME_TRADITIONAL) { 21049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette return R.style.Theme_Dialog_Alert; 21149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette } else if (themeResId == THEME_HOLO_DARK) { 21249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette return R.style.Theme_Holo_Dialog_Alert; 21349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette } else if (themeResId == THEME_HOLO_LIGHT) { 21449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette return R.style.Theme_Holo_Light_Dialog_Alert; 21549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette } else if (themeResId == THEME_DEVICE_DEFAULT_DARK) { 21649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette return R.style.Theme_DeviceDefault_Dialog_Alert; 21749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette } else if (themeResId == THEME_DEVICE_DEFAULT_LIGHT) { 21849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette return R.style.Theme_DeviceDefault_Light_Dialog_Alert; 2199553fb3240f6d2e52012f94fb59271348a07b94dAdam Lesinski } else if (ResourceId.isValid(themeResId)) { 220360182156a8e188534620de1e804993a6458470dAdam Lesinski // start of real resource IDs. 22149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette return themeResId; 222e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn } else { 22349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette final TypedValue outValue = new TypedValue(); 22449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette context.getTheme().resolveAttribute(R.attr.alertDialogTheme, outValue, true); 225e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn return outValue.resourceId; 226e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn } 2272fbf4de64f0ec5052201cea9519c44d5b1789a40Adam Powell } 2282fbf4de64f0ec5052201cea9519c44d5b1789a40Adam Powell 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 230a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette * Gets one of the buttons used in the dialog. Returns null if the specified 231f34ef74eb2b72dd945e6903a748932c1f90f3daaAlan Viverette * button does not exist or the dialog has not yet been fully created (for 232f34ef74eb2b72dd945e6903a748932c1f90f3daaAlan Viverette * example, via {@link #show()} or {@link #create()}). 233a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette * 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param whichButton The identifier of the button that should be returned. 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * For example, this can be 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_POSITIVE}. 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The button from the dialog, or null if a button does not exist. 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Button getButton(int whichButton) { 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAlert.getButton(whichButton); 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 242a1e63319428c5713e89f67a7297feeec34c51a8dAlan Viverette 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the list view used in the dialog. 24549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The {@link ListView} from the dialog. 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ListView getListView() { 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAlert.getListView(); 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setTitle(CharSequence title) { 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.setTitle(title); 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setTitle(title); 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see Builder#setCustomTitle(View) 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setCustomTitle(View customTitleView) { 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setCustomTitle(customTitleView); 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setMessage(CharSequence message) { 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setMessage(message); 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the view to display in that dialog. 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setView(View view) { 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setView(view); 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 27549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 27749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Set the view to display in that dialog, specifying the spacing to appear around that 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * view. 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param view The view to show in the content area of the dialog 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewSpacingLeft Extra space to appear to the left of {@code view} 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewSpacingTop Extra space to appear above {@code view} 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewSpacingRight Extra space to appear to the right of {@code view} 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewSpacingBottom Extra space to appear below {@code view} 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setView(View view, int viewSpacingLeft, int viewSpacingTop, int viewSpacingRight, 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int viewSpacingBottom) { 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setView(view, viewSpacingLeft, viewSpacingTop, viewSpacingRight, viewSpacingBottom); 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2924c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout * Internal api to allow hinting for the best button panel layout. 2934c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout * @hide 2944c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout */ 2954c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout void setButtonPanelLayoutHint(int layoutHint) { 2964c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout mAlert.setButtonPanelLayoutHint(layoutHint); 2974c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout } 2984c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout 2994c0cb8a526eec87fdba6dc371e21abfa4e993ea0Craig Stout /** 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a message to be sent when a button is pressed. 30149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param whichButton Which button to set the message for, can be one of 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_POSITIVE}, 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_NEGATIVE}, or 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_NEUTRAL} 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in positive button. 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param msg The {@link Message} to be sent when clicked. 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton(int whichButton, CharSequence text, Message msg) { 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setButton(whichButton, text, null, msg); 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 31249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the positive button of the dialog is pressed. 31549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param whichButton Which button to set the listener on, can be one of 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_POSITIVE}, 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_NEGATIVE}, or 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_NEUTRAL} 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in positive button. 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton(int whichButton, CharSequence text, OnClickListener listener) { 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setButton(whichButton, text, listener, null); 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #setButton(int, CharSequence, Message)} with 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_POSITIVE}. 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton(CharSequence text, Message msg) { 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setButton(BUTTON_POSITIVE, text, msg); 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 33549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #setButton(int, CharSequence, Message)} with 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_NEGATIVE}. 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton2(CharSequence text, Message msg) { 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setButton(BUTTON_NEGATIVE, text, msg); 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use {@link #setButton(int, CharSequence, Message)} with 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link DialogInterface#BUTTON_NEUTRAL}. 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton3(CharSequence text, Message msg) { 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setButton(BUTTON_NEUTRAL, text, msg); 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when button 1 of the dialog is pressed. 35649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in button 1. 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #setButton(int, CharSequence, android.content.DialogInterface.OnClickListener)} 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with {@link DialogInterface#BUTTON_POSITIVE} 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton(CharSequence text, final OnClickListener listener) { 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setButton(BUTTON_POSITIVE, text, listener); 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when button 2 of the dialog is pressed. 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in button 2. 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #setButton(int, CharSequence, android.content.DialogInterface.OnClickListener)} 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with {@link DialogInterface#BUTTON_NEGATIVE} 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton2(CharSequence text, final OnClickListener listener) { 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setButton(BUTTON_NEGATIVE, text, listener); 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when button 3 of the dialog is pressed. 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in button 3. 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Use 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #setButton(int, CharSequence, android.content.DialogInterface.OnClickListener)} 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with {@link DialogInterface#BUTTON_POSITIVE} 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setButton3(CharSequence text, final OnClickListener listener) { 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setButton(BUTTON_NEUTRAL, text, listener); 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set resId to 0 if you don't want an icon. 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param resId the resourceId of the drawable to use as the icon or 0 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if you don't want an icon. 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3997b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye public void setIcon(@DrawableRes int resId) { 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setIcon(resId); 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 40249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setIcon(Drawable icon) { 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setIcon(icon); 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 407947f7824118f0e9b642df8760a8725a7eda59318Adam Powell /** 408947f7824118f0e9b642df8760a8725a7eda59318Adam Powell * Set an icon as supplied by a theme attribute. e.g. android.R.attr.alertDialogIcon 409947f7824118f0e9b642df8760a8725a7eda59318Adam Powell * 410947f7824118f0e9b642df8760a8725a7eda59318Adam Powell * @param attrId ID of a theme attribute that points to a drawable resource. 411947f7824118f0e9b642df8760a8725a7eda59318Adam Powell */ 4127b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye public void setIconAttribute(@AttrRes int attrId) { 413947f7824118f0e9b642df8760a8725a7eda59318Adam Powell TypedValue out = new TypedValue(); 414947f7824118f0e9b642df8760a8725a7eda59318Adam Powell mContext.getTheme().resolveAttribute(attrId, out, true); 415947f7824118f0e9b642df8760a8725a7eda59318Adam Powell mAlert.setIcon(out.resourceId); 416947f7824118f0e9b642df8760a8725a7eda59318Adam Powell } 417947f7824118f0e9b642df8760a8725a7eda59318Adam Powell 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setInverseBackgroundForced(boolean forceInverseBackground) { 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.setInverseBackgroundForced(forceInverseBackground); 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 42149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onCreate(Bundle savedInstanceState) { 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onCreate(savedInstanceState); 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlert.installContent(); 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean onKeyDown(int keyCode, KeyEvent event) { 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mAlert.onKeyDown(keyCode, event)) return true; 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return super.onKeyDown(keyCode, event); 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean onKeyUp(int keyCode, KeyEvent event) { 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mAlert.onKeyUp(keyCode, event)) return true; 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return super.onKeyUp(keyCode, event); 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 43949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static class Builder { 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final AlertController.AlertParams P; 44249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 44449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Creates a builder for an alert dialog that uses the default alert 44549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * dialog theme. 44649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 44749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * The default alert dialog theme is defined by 44849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@link android.R.attr#alertDialogTheme} within the parent 44949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@code context}'s theme. 45049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 45149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param context the parent context 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder(Context context) { 4549553fb3240f6d2e52012f94fb59271348a07b94dAdam Lesinski this(context, resolveDialogTheme(context, ResourceId.ID_NULL)); 455e429c5ec9d52a5e9af9133f5de9f1002f04aede1Martin Nordholts } 456e429c5ec9d52a5e9af9133f5de9f1002f04aede1Martin Nordholts 457e429c5ec9d52a5e9af9133f5de9f1002f04aede1Martin Nordholts /** 45849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Creates a builder for an alert dialog that uses an explicit theme 45949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * resource. 46049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 46149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * The specified theme resource ({@code themeResId}) is applied on top 46249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * of the parent {@code context}'s theme. It may be specified as a 46349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * style resource containing a fully-populated theme, such as 46449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@link android.R.style#Theme_Material_Dialog}, to replace all 46549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * attributes in the parent {@code context}'s theme including primary 46649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * and accent colors. 46749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 46849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * To preserve attributes such as primary and accent colors, the 46949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@code themeResId} may instead be specified as an overlay theme such 47049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * as {@link android.R.style#ThemeOverlay_Material_Dialog}. This will 47149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * override only the window attributes necessary to style the alert 47249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * window as a dialog. 47349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 47449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Alternatively, the {@code themeResId} may be specified as {@code 0} 47549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * to use the parent {@code context}'s resolved value for 47649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@link android.R.attr#alertDialogTheme}. 47749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 47849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param context the parent context 47949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param themeResId the resource ID of the theme against which to inflate 48049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * this dialog, or {@code 0} to use the parent 48149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * {@code context}'s default alert dialog theme 482e429c5ec9d52a5e9af9133f5de9f1002f04aede1Martin Nordholts */ 48349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette public Builder(Context context, int themeResId) { 484e79b55482eb3f26d6d5b56dce40682dd68826f8cDianne Hackborn P = new AlertController.AlertParams(new ContextThemeWrapper( 48549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette context, resolveDialogTheme(context, themeResId))); 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 48749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 489c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell * Returns a {@link Context} with the appropriate theme for dialogs created by this Builder. 490c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell * Applications should use this Context for obtaining LayoutInflaters for inflating views 491c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell * that will be used in the resulting dialogs, as it will cause views to be inflated with 492c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell * the correct theme. 493c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell * 494c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell * @return A Context for built Dialogs. 495c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell */ 496c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell public Context getContext() { 497ccb013ffac696df1cd1bfc528264e583d01c9ab5Adam Powell return P.mContext; 498c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell } 499c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell 500c49c17314d4b7f36e50a5b01edd6d4b13b940366Adam Powell /** 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the title using the given resource id. 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5057b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye public Builder setTitle(@StringRes int titleId) { 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mTitle = P.mContext.getText(titleId); 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 50949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the title displayed in the {@link Dialog}. 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setTitle(CharSequence title) { 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mTitle = title; 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 51949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 52149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Set the title using the custom view {@code customTitleView}. 52249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 52349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * The methods {@link #setTitle(int)} and {@link #setIcon(int)} should 52449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * be sufficient for most titles, but this is provided if the title 52549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * needs more customization. Using this will replace the title and icon 52649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * set via the other methods. 52749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 52849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <strong>Note:</strong> To ensure consistent styling, the custom view 52949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * should be inflated or constructed using the alert dialog's themed 53049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * context obtained via {@link #getContext()}. 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 53249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param customTitleView the custom view to use as the title 53349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @return this Builder object to allow for chaining of calls to set 53449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * methods 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setCustomTitle(View customTitleView) { 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCustomTitleView = customTitleView; 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 54049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the message to display using the given resource id. 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5467b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye public Builder setMessage(@StringRes int messageId) { 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mMessage = P.mContext.getText(messageId); 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 55049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the message to display. 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setMessage(CharSequence message) { 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mMessage = message; 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 56049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the resource id of the {@link Drawable} to be used in the title. 5635c2d8f7d51d5a944459ddc61034854c6cef7a639Alan Viverette * <p> 5645c2d8f7d51d5a944459ddc61034854c6cef7a639Alan Viverette * Takes precedence over values set using {@link #setIcon(Drawable)}. 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5687b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye public Builder setIcon(@DrawableRes int iconId) { 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIconId = iconId; 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 57249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the {@link Drawable} to be used in the title. 57549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 57649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <strong>Note:</strong> To ensure consistent styling, the drawable 57749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * should be inflated or constructed using the alert dialog's themed 57849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * context obtained via {@link #getContext()}. 57949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 58049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @return this Builder object to allow for chaining of calls to set 58149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * methods 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setIcon(Drawable icon) { 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIcon = icon; 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 587947f7824118f0e9b642df8760a8725a7eda59318Adam Powell 588947f7824118f0e9b642df8760a8725a7eda59318Adam Powell /** 5895c2d8f7d51d5a944459ddc61034854c6cef7a639Alan Viverette * Set an icon as supplied by a theme attribute. e.g. 5905c2d8f7d51d5a944459ddc61034854c6cef7a639Alan Viverette * {@link android.R.attr#alertDialogIcon}. 5915c2d8f7d51d5a944459ddc61034854c6cef7a639Alan Viverette * <p> 5925c2d8f7d51d5a944459ddc61034854c6cef7a639Alan Viverette * Takes precedence over values set using {@link #setIcon(int)} or 5935c2d8f7d51d5a944459ddc61034854c6cef7a639Alan Viverette * {@link #setIcon(Drawable)}. 594947f7824118f0e9b642df8760a8725a7eda59318Adam Powell * 595947f7824118f0e9b642df8760a8725a7eda59318Adam Powell * @param attrId ID of a theme attribute that points to a drawable resource. 596947f7824118f0e9b642df8760a8725a7eda59318Adam Powell */ 5977b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye public Builder setIconAttribute(@AttrRes int attrId) { 598947f7824118f0e9b642df8760a8725a7eda59318Adam Powell TypedValue out = new TypedValue(); 599947f7824118f0e9b642df8760a8725a7eda59318Adam Powell P.mContext.getTheme().resolveAttribute(attrId, out, true); 600947f7824118f0e9b642df8760a8725a7eda59318Adam Powell P.mIconId = out.resourceId; 601947f7824118f0e9b642df8760a8725a7eda59318Adam Powell return this; 602947f7824118f0e9b642df8760a8725a7eda59318Adam Powell } 603947f7824118f0e9b642df8760a8725a7eda59318Adam Powell 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the positive button of the dialog is pressed. 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param textId The resource id of the text to display in the positive button 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6117b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye public Builder setPositiveButton(@StringRes int textId, final OnClickListener listener) { 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mPositiveButtonText = P.mContext.getText(textId); 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mPositiveButtonListener = listener; 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 61649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the positive button of the dialog is pressed. 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in the positive button 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setPositiveButton(CharSequence text, final OnClickListener listener) { 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mPositiveButtonText = text; 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mPositiveButtonListener = listener; 6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 62949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the negative button of the dialog is pressed. 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param textId The resource id of the text to display in the negative button 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6377b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye public Builder setNegativeButton(@StringRes int textId, final OnClickListener listener) { 6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNegativeButtonText = P.mContext.getText(textId); 6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNegativeButtonListener = listener; 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 64249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the negative button of the dialog is pressed. 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in the negative button 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setNegativeButton(CharSequence text, final OnClickListener listener) { 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNegativeButtonText = text; 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNegativeButtonListener = listener; 6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 65549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the neutral button of the dialog is pressed. 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param textId The resource id of the text to display in the neutral button 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6637b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye public Builder setNeutralButton(@StringRes int textId, final OnClickListener listener) { 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNeutralButtonText = P.mContext.getText(textId); 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNeutralButtonListener = listener; 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 66849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a listener to be invoked when the neutral button of the dialog is pressed. 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The text to display in the neutral button 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The {@link DialogInterface.OnClickListener} to use. 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setNeutralButton(CharSequence text, final OnClickListener listener) { 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNeutralButtonText = text; 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mNeutralButtonListener = listener; 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 68149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 68369ea4e15e52c456537575d21443ac1efdb03a902Brad Fitzpatrick * Sets whether the dialog is cancelable or not. Default is true. 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setCancelable(boolean cancelable) { 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCancelable = cancelable; 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 69149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the callback that will be called if the dialog is canceled. 6947f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * 6957f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * <p>Even in a cancelable dialog, the dialog may be dismissed for reasons other than 6967f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * being canceled or one of the supplied choices being selected. 6977f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * If you are interested in listening for all cases where the dialog is dismissed 6987f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * and not just when it is canceled, see 6997f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * {@link #setOnDismissListener(android.content.DialogInterface.OnDismissListener) setOnDismissListener}.</p> 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setCancelable(boolean) 7017f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * @see #setOnDismissListener(android.content.DialogInterface.OnDismissListener) 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setOnCancelListener(OnCancelListener onCancelListener) { 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnCancelListener = onCancelListener; 7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 70949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7117f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * Sets the callback that will be called when the dialog is dismissed for any reason. 7127f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * 7137f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell * @return This Builder object to allow for chaining of calls to set methods 7147f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell */ 7157f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell public Builder setOnDismissListener(OnDismissListener onDismissListener) { 7167f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell P.mOnDismissListener = onDismissListener; 7177f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell return this; 7187f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell } 7197f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell 7207f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell /** 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the callback that will be called if a key is dispatched to the dialog. 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setOnKeyListener(OnKeyListener onKeyListener) { 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnKeyListener = onKeyListener; 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 72949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, you will be notified of the 7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * selected item via the supplied listener. This should be an array type i.e. R.array.foo 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7367b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye public Builder setItems(@ArrayRes int itemsId, final OnClickListener listener) { 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mItems = P.mContext.getResources().getTextArray(itemsId); 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 74149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, you will be notified of the 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * selected item via the supplied listener. 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setItems(CharSequence[] items, final OnClickListener listener) { 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mItems = items; 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 75349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items, which are supplied by the given {@link ListAdapter}, to be 7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * displayed in the dialog as the content, you will be notified of the 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * selected item via the supplied listener. 75849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param adapter The {@link ListAdapter} to supply the list of items 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The listener that will be called when an item is clicked. 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setAdapter(final ListAdapter adapter, final OnClickListener listener) { 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mAdapter = adapter; 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 76949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items, which are supplied by the given {@link Cursor}, to be 7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * displayed in the dialog as the content, you will be notified of the 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * selected item via the supplied listener. 77449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param cursor The {@link Cursor} to supply the list of items 7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener The listener that will be called when an item is clicked. 7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param labelColumn The column name on the cursor containing the string to display 7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * in the label. 7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setCursor(final Cursor cursor, final OnClickListener listener, 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String labelColumn) { 7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCursor = cursor; 7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mLabelColumn = labelColumn; 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 78949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, 7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you will be notified of the selected item via the supplied listener. 7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This should be an array type, e.g. R.array.foo. The list will have 7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a check mark displayed to the right of the text for each checked 7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * item. Clicking on an item in the list will not dismiss the dialog. 7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Clicking on a button will dismiss the dialog. 79749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param itemsId the resource id of an array i.e. R.array.foo 7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param checkedItems specifies which items are checked. It should be null in which case no 8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * items are checked. If non null it must be exactly the same length as the array of 8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * items. 8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8087b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye public Builder setMultiChoiceItems(@ArrayRes int itemsId, boolean[] checkedItems, 8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final OnMultiChoiceClickListener listener) { 8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mItems = P.mContext.getResources().getTextArray(itemsId); 8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnCheckboxClickListener = listener; 8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCheckedItems = checkedItems; 8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsMultiChoice = true; 8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 81649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, 8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you will be notified of the selected item via the supplied listener. 8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The list will have a check mark displayed to the right of the text 8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for each checked item. Clicking on an item in the list will not 8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismiss the dialog. Clicking on a button will dismiss the dialog. 82349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param items the text of the items to be displayed in the list. 8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param checkedItems specifies which items are checked. It should be null in which case no 8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * items are checked. If non null it must be exactly the same length as the array of 8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * items. 8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 8339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 83449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette public Builder setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, 8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final OnMultiChoiceClickListener listener) { 8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mItems = items; 8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnCheckboxClickListener = listener; 8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCheckedItems = checkedItems; 8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsMultiChoice = true; 8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 84249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, 8459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you will be notified of the selected item via the supplied listener. 8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The list will have a check mark displayed to the right of the text 8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for each checked item. Clicking on an item in the list will not 8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismiss the dialog. Clicking on a button will dismiss the dialog. 84949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param cursor the cursor used to provide the items. 8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param isCheckedColumn specifies the column name on the cursor to use to determine 8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * whether a checkbox is checked or not. It must return an integer value where 1 8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * means checked and 0 means unchecked. 8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param labelColumn The column name on the cursor containing the string to display in the 8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * label. 8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 86249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette public Builder setMultiChoiceItems(Cursor cursor, String isCheckedColumn, String labelColumn, 8639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final OnMultiChoiceClickListener listener) { 8649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCursor = cursor; 8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnCheckboxClickListener = listener; 8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsCheckedColumn = isCheckedColumn; 8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mLabelColumn = labelColumn; 8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsMultiChoice = true; 8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 87149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, you will be notified of 8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the selected item via the supplied listener. This should be an array type i.e. 8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * R.array.foo The list will have a check mark displayed to the right of the text for the 8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * checked item. Clicking on an item in the list will not dismiss the dialog. Clicking on a 8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button will dismiss the dialog. 87849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param itemsId the resource id of an array i.e. R.array.foo 8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param checkedItem specifies which item is checked. If -1 no items are checked. 8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8877b9c912f536925ac6ec43935d6e97506851b33d6Tor Norbye public Builder setSingleChoiceItems(@ArrayRes int itemsId, int checkedItem, 8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final OnClickListener listener) { 8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mItems = P.mContext.getResources().getTextArray(itemsId); 8909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 8919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCheckedItem = checkedItem; 8929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsSingleChoice = true; 8939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 89549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, you will be notified of 8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the selected item via the supplied listener. The list will have a check mark displayed to 8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the right of the text for the checked item. Clicking on an item in the list will not 9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismiss the dialog. Clicking on a button will dismiss the dialog. 90149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param cursor the cursor to retrieve the items from. 9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param checkedItem specifies which item is checked. If -1 no items are checked. 9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param labelColumn The column name on the cursor containing the string to display in the 9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * label. 9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 9079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 9089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 9099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 9119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 91249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette public Builder setSingleChoiceItems(Cursor cursor, int checkedItem, String labelColumn, 9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final OnClickListener listener) { 9149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCursor = cursor; 9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 9169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCheckedItem = checkedItem; 9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mLabelColumn = labelColumn; 9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsSingleChoice = true; 9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 92149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, you will be notified of 9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the selected item via the supplied listener. The list will have a check mark displayed to 9259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the right of the text for the checked item. Clicking on an item in the list will not 9269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismiss the dialog. Clicking on a button will dismiss the dialog. 92749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param items the items to be displayed. 9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param checkedItem specifies which item is checked. If -1 no items are checked. 9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setSingleChoiceItems(CharSequence[] items, int checkedItem, final OnClickListener listener) { 9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mItems = items; 9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 9399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCheckedItem = checkedItem; 9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsSingleChoice = true; 9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 94249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette } 94349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set a list of items to be displayed in the dialog as the content, you will be notified of 9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the selected item via the supplied listener. The list will have a check mark displayed to 9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the right of the text for the checked item. Clicking on an item in the list will not 9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismiss the dialog. Clicking on a button will dismiss the dialog. 94949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param adapter The {@link ListAdapter} to supply the list of items 9519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param checkedItem specifies which item is checked. If -1 no items are checked. 9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener notified when an item on the list is clicked. The dialog will not be 9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * dismissed when an item is clicked. It will only be dismissed if clicked on a 9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * button, if no buttons are supplied it's up to the user to dismiss the dialog. 9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return This Builder object to allow for chaining of calls to set methods 9579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setSingleChoiceItems(ListAdapter adapter, int checkedItem, final OnClickListener listener) { 9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mAdapter = adapter; 9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnClickListener = listener; 9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mCheckedItem = checkedItem; 9629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mIsSingleChoice = true; 9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 96549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets a listener to be invoked when an item in the list is selected. 9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 96949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param listener the listener to be invoked 97049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @return this Builder object to allow for chaining of calls to set methods 97149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @see AdapterView#setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener) 9729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setOnItemSelectedListener(final AdapterView.OnItemSelectedListener listener) { 9749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mOnItemSelectedListener = listener; 9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 97749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 979ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette * Set a custom view resource to be the contents of the Dialog. The 980ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette * resource will be inflated, adding all top-level views to the screen. 981ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette * 982ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette * @param layoutResId Resource ID to be inflated. 98349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @return this Builder object to allow for chaining of calls to set 984ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette * methods 985ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette */ 986ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette public Builder setView(int layoutResId) { 987ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette P.mView = null; 988ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette P.mViewLayoutResId = layoutResId; 989ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette P.mViewSpacingSpecified = false; 990ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette return this; 991ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette } 992ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette 993ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette /** 99449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Sets a custom view to be the contents of the alert dialog. 99549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 99649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * When using a pre-Holo theme, if the supplied view is an instance of 99749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * a {@link ListView} then the light background will be used. 99849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 99949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <strong>Note:</strong> To ensure consistent styling, the custom view 100049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * should be inflated or constructed using the alert dialog's themed 100149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * context obtained via {@link #getContext()}. 10029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 100349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param view the view to use as the contents of the alert dialog 100449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @return this Builder object to allow for chaining of calls to set 100549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * methods 10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setView(View view) { 10089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mView = view; 1009ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette P.mViewLayoutResId = 0; 10109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mViewSpacingSpecified = false; 10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 101349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 101449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette /** 101549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Sets a custom view to be the contents of the alert dialog and 101649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * specifies additional padding around that view. 101749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 101849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * When using a pre-Holo theme, if the supplied view is an instance of 101949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * a {@link ListView} then the light background will be used. 102049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 102149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <strong>Note:</strong> To ensure consistent styling, the custom view 102249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * should be inflated or constructed using the alert dialog's themed 102349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * context obtained via {@link #getContext()}. 102449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 102549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param view the view to use as the contents of the alert dialog 102649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param viewSpacingLeft spacing between the left edge of the view and 102749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * the dialog frame 102849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param viewSpacingTop spacing between the top edge of the view and 102949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * the dialog frame 103049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param viewSpacingRight spacing between the right edge of the view 103149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * and the dialog frame 103249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param viewSpacingBottom spacing between the bottom edge of the view 103349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * and the dialog frame 103449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @return this Builder object to allow for chaining of calls to set 10359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * methods 103649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 103749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @hide Remove once the framework usages have been replaced. 103849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @deprecated Set the padding on the view itself. 10399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 104049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette @Deprecated 10419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setView(View view, int viewSpacingLeft, int viewSpacingTop, 10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int viewSpacingRight, int viewSpacingBottom) { 10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mView = view; 1044ec186706df72fbb62bfe813d83cff9167dd95cb4Alan Viverette P.mViewLayoutResId = 0; 10459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mViewSpacingSpecified = true; 10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mViewSpacingLeft = viewSpacingLeft; 10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mViewSpacingTop = viewSpacingTop; 10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mViewSpacingRight = viewSpacingRight; 10499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mViewSpacingBottom = viewSpacingBottom; 10509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 105249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 10539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 105449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Sets the alert dialog to use the inverse background, regardless of 105549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * what the contents is. 105649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * 105749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @param useInverseBackground whether to use the inverse background 105849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @return this Builder object to allow for chaining of calls to set methods 105949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * @deprecated This flag is only used for pre-Material themes. Instead, 106049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * specify the window background using on the alert dialog 106149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * theme. 10629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 106349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette @Deprecated 10649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Builder setInverseBackgroundForced(boolean useInverseBackground) { 10659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.mForceInverseBackground = useInverseBackground; 10669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 10679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10689c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy 10699c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy /** 10709c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy * @hide 10719c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy */ 10729c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy public Builder setRecycleOnMeasureEnabled(boolean enabled) { 10739c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy P.mRecycleOnMeasure = enabled; 10749c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy return this; 10759c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy } 10769c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy 10779c802c1e95befbd8de30ea4ebc48ae05cb948b2bRomain Guy 10789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 107949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Creates an {@link AlertDialog} with the arguments supplied to this 108049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * builder. 108149f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 108249f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Calling this method does not display the dialog. If no additional 108349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * processing is needed, {@link #show()} may be called instead to both 108449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * create and display the dialog. 10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public AlertDialog create() { 108793d9e26ffbbb6780dd2473cc395ae0a3481b4fd4Alan Viverette // Context has already been wrapped with the appropriate theme. 108893d9e26ffbbb6780dd2473cc395ae0a3481b4fd4Alan Viverette final AlertDialog dialog = new AlertDialog(P.mContext, 0, false); 10899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project P.apply(dialog.mAlert); 1090fbca76965b96b31a8974e461ee1929867ef3327bAdam Powell dialog.setCancelable(P.mCancelable); 1091fbca76965b96b31a8974e461ee1929867ef3327bAdam Powell if (P.mCancelable) { 1092fbca76965b96b31a8974e461ee1929867ef3327bAdam Powell dialog.setCanceledOnTouchOutside(true); 1093fbca76965b96b31a8974e461ee1929867ef3327bAdam Powell } 10949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dialog.setOnCancelListener(P.mOnCancelListener); 10957f02dc5c9c48a01bec459b71ac73a6ad37b9e12cAdam Powell dialog.setOnDismissListener(P.mOnDismissListener); 10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (P.mOnKeyListener != null) { 10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dialog.setOnKeyListener(P.mOnKeyListener); 10989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return dialog; 11009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 110349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Creates an {@link AlertDialog} with the arguments supplied to this 110449f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * builder and immediately displays the dialog. 110549f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <p> 110649f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * Calling this method is functionally identical to: 110749f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * <pre> 110849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * AlertDialog dialog = builder.create(); 110949f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * dialog.show(); 111049f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette * </pre> 11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public AlertDialog show() { 111349f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette final AlertDialog dialog = create(); 11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dialog.show(); 11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return dialog; 11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 111849f118ef08e69cb6aaa6a7bcab8a784ae1e26a20Alan Viverette 11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1120