Dialog
extends Objectimplements DialogInterface KeyEvent.Callback View.OnCreateContextMenuListener Window.Callback
java.lang.Object | |
↳ | android.app.Dialog |
onCreateDialog(int)
, onPrepareDialog(int, Dialog)
, showDialog(int)
, and dismissDialog(int)
. If these methods are used, getOwnerActivity()
will return the Activity that managed this dialog. Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Dialog(
Context context)
Create a Dialog window that uses the default dialog frame style.
| |||||||||||
Dialog(
Context context, int theme)
Create a Dialog window that uses a custom dialog style.
|
Protected Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Dialog( Context context, boolean cancelable, DialogInterface.OnCancelListener cancelListener) |
public void cancel ()
Cancel the dialog. This is essentially the same as calling dismiss()
, but it will also call your DialogInterface.OnCancelListener
(if registered).
public void dismiss ()
Dismiss this dialog, removing it from the screen. This method can be invoked safely from any thread. Note that you should not override this method to do cleanup when the dialog is dismissed, instead implement that in onStop()
.
public void setOnCancelListener (DialogInterface.OnCancelListener listener)
Set a listener to be invoked when the dialog is canceled.
This will only be invoked when the dialog is canceled. Cancel events alone will not capture all ways that the dialog might be dismissed. If the creator needs to know when a dialog is dismissed in general, use setOnDismissListener(DialogInterface.OnDismissListener)
.
Parameters
listener | The DialogInterface.OnCancelListener to use. |
---|
public void setOnDismissListener (DialogInterface.OnDismissListener listener)
Set a listener to be invoked when the dialog is dismissed.
Parameters
listener | The DialogInterface.OnDismissListener to use. |
---|
public void setTitle (int titleId)
Set the title text for this dialog's window. The text is retrieved from the resources with the supplied identifier.
Parameters
titleId | the title's text resource identifier |
---|
public void setTitle (CharSequence title)
Set the title text for this dialog's window.
Parameters
title | The new text to display in the title. |
---|
public void show ()
Start the dialog and display it on screen. The window is placed in the application layer and opaque. Note that you should not override this method to do initialization when the dialog is shown, instead implement that in onStart()
.
Dialog
class is the base class for dialogs, but youshould avoid instantiating Dialog
directly.Instead, use one of the following subclasses:AlertDialog
AllTradeInquiriesActivity.this, "",
R.layout.loading_dialog_only_round);
int layoutId) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(layoutId, null);// 得到加载view
LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加载布局
// main.xml中的ImageView
ImageView spaceshipImage = (ImageView) v.findViewById(R.id.img);
TextView tipTextView = (TextView) v.findViewById(R.id.load_text);// 提示文字
loadingDialog.setCancelable(false);/
LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));// 设置布局
return loadingDialog;
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage(R.string.dialog_fire_missiles) .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // FIRE ZE MISSILES! } }) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // User cancelled the dialog } }); // Create the AlertDialog object and return it return builder.create();
- Title
This is optional and should be used only when the content area is occupied by a detailed message, a list, or custom layout. If you need to state a simple message or question (such as the dialog in figure 1), you don't need a title.
- Content area
This can display a message, a list, or other custom layout.
- Action buttons
There should be no more than three action buttons in a dialog.
// 1. Instantiate anAlertDialog.Builder
with its constructor AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); // 2. Chain together various setter methods to set the dialog characteristics builder.setMessage(R.string.dialog_message) .setTitle(R.string.dialog_title); // 3. Get theAlertDialog
fromcreate()
AlertDialog dialog = builder.create();
Adding buttons
To add action buttons like those in figure 2,call the setPositiveButton()
andsetNegativeButton()
methods:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); // Add the buttons builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // User clicked OK button } }); builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // User cancelled the dialog } }); // Set other dialog properties ... // Create the AlertDialog AlertDialog dialog = builder.create();
The set...Button()
methods require a title for the button (suppliedby a string resource) and a DialogInterface.OnClickListener
that defines the action to take when the user presses the button.
There are three different action buttons you can add:
-
Positive
- You should use this to accept and continue with the action (the "OK" action). Negative
- You should use this to cancel the action. Neutral
- You should use this when the user may not want to proceed with the action, but doesn't necessarily want to cancel. It appears between the positive and negative buttons. For example, the action might be "Remind me later."
public Dialog onCreateDialog(Bundle savedInstanceState) { mSelectedItems = new ArrayList(); // Where we track the selected items AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); // Set the dialog title builder.setTitle(R.string.pick_toppings) // Specify the list array, the items to be selected by default (null for none), // and the listener through which to receive callbacks when items are selected .setMultiChoiceItems(R.array.toppings, null, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { if (isChecked) { // If the user checked the item, add it to the selected items mSelectedItems.add(which); } else if (mSelectedItems.contains(which)) { // Else, if the item is already in the array, remove it mSelectedItems.remove(Integer.valueOf(which)); } } }) // Set the action buttons .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { // User clicked OK, so save the mSelectedItems results somewhere // or return them to the component that opened the dialog ... } }) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { ... } }); return builder.create(); }
Activity
as a dialoginstead of using the Dialog
APIs. Simply create an activity and set its theme toTheme.Holo.Dialog
in the <activity>
manifest element:<activity android:theme="@android:style/Theme.Holo.Dialog" >That's it. The activity now displays in a dialog window instead of fullscreen.