Skip to content Skip to sidebar Skip to footer

Dialog Oncreatedialog(int Dialogid)

To create the dialog, I'm overriding the following method: protected Dialog onCreateDialog(final int dialogId) { } and to call this, I'm using: showDialog(id); But now I want to

Solution 1:

I guess by FragmentDialog you mean showing Dialogs inside a Fragment and NOT a DialogFragment

But you can replicate this behavior inside a Fragment Like this:

classSomeFragmentextendsFragment{

  HashMap<Integer, Dialog> mDialogs = newHashMap<Integer, Dialog>();

  publicvoidshowDialog(int dialogId){

    Dialogd= mDialogs.get(dialogId);
    if (d == null){

      d = onCreateDialog(dialogId);
      mDialogs.put(dialogId, d);
    }
    if (d != null){
       onPrepareDialog(d, dialogId);
       d.show();
    }

  }

  public Dialog onCreateDialog(int dialogId){
    //just create your Dialog here, once
  }

  publicvoidonPrepareDialog(Dialog d, int dialogId){
      super.onPrepareDialog(d, dialogId);
      // change something inside already created Dialogs here
  }
}

it is just a simple caching of Dialogs

EDIT: Original Source from Activity:

/**
 * Show a dialog managed by this activity.  A call to {@link #onCreateDialog(int)}
 * will be made with the same id the first time this is called for a given
 * id.  From thereafter, the dialog will be automatically saved and restored.
 *
 * Each time a dialog is shown, {@link #onPrepareDialog(int, Dialog)} will
 * be made to provide an opportunity to do any timely preparation.
 *
 * @param id The id of the managed dialog.
 *
 * @see Dialog
 * @see #onCreateDialog(int)
 * @see #onPrepareDialog(int, Dialog)
 * @see #dismissDialog(int)
 * @see #removeDialog(int)
 */publicfinalvoidshowDialog(int id) {
    if (mManagedDialogs == null) {
        mManagedDialogs = newSparseArray<Dialog>();
    }
    Dialogdialog= mManagedDialogs.get(id);
    if (dialog == null) {
        dialog = createDialog(id, null);
        mManagedDialogs.put(id, dialog);
    }

    onPrepareDialog(id, dialog);
    dialog.show();
}

/**
 * Provides an opportunity to prepare a managed dialog before it is being
 * shown.
 * <p>
 * Override this if you need to update a managed dialog based on the state
 * of the application each time it is shown. For example, a time picker
 * dialog might want to be updated with the current time. You should call
 * through to the superclass's implementation. The default implementation
 * will set this Activity as the owner activity on the Dialog.
 * 
 * @param id The id of the managed dialog.
 * @param dialog The dialog.
 * @see #onCreateDialog(int)
 * @see #showDialog(int)
 * @see #dismissDialog(int)
 * @see #removeDialog(int)
 */protectedvoidonPrepareDialog(int id, Dialog dialog) {
    dialog.setOwnerActivity(this);
}



 /**
 * Callback for creating dialogs that are managed (saved and restored) for you
 * by the activity.
 *
 * If you use {@link #showDialog(int)}, the activity will call through to
 * this method the first time, and hang onto it thereafter.  Any dialog
 * that is created by this method will automatically be saved and restored
 * for you, including whether it is showing.
 *
 * If you would like the activity to manage the saving and restoring dialogs
 * for you, you should override this method and handle any ids that are
 * passed to {@link #showDialog}.
 *
 * If you would like an opportunity to prepare your dialog before it is shown,
 * override {@link #onPrepareDialog(int, Dialog)}.
 *
 * @param id The id of the dialog.
 * @return The dialog
 *
 * @see #onPrepareDialog(int, Dialog)
 * @see #showDialog(int)
 * @see #dismissDialog(int)
 * @see #removeDialog(int)
 */protected Dialog onCreateDialog(int id) {
    returnnull;
}

Post a Comment for "Dialog Oncreatedialog(int Dialogid)"