title: setOnCancelListener and setOnDismissListener is not called for AlertDialog for back button pressed or touch outside
body: <p>When</p>
  
  <ul>
  <li>Touch outside the dialog region</li>
  <li>Press on back button</li>
  </ul>
  
  <p>I'm expecting <code>onDismiss</code> (Or <code>onCancel</code>) will be called. However, both of them are not called. May I know is there anything I'm missing? From <a href="https://stackoverflow.com/questions/12525304/alertdialog-setondismisslistener-not-working">AlertDialog setOnDismissListener not working</a>, I thought <code>onCancel</code> will be called when I press back button. But it doesn't work for me. May I know is there anything I had missed out?</p>
  
  <pre><code>public class RateAppDialogFragment extends SherlockDialogFragment {
      public static RateAppDialogFragment newInstance() {
          RateAppDialogFragment rateAppDialogFragment = new RateAppDialogFragment();
          return rateAppDialogFragment;
      }
  
      @Override
      public Dialog onCreateDialog(Bundle savedInstanceState) {
          // Get the layout inflater
          LayoutInflater inflater = getActivity().getLayoutInflater();
          View view = inflater.inflate(R.layout.rate_app_dialog_fragment, null);
  
          Utils.setCustomTypeFace(view, Utils.ROBOTO_LIGHT_TYPE_FACE);
  
          final AlertDialog dialog = new AlertDialog.Builder(this.getSherlockActivity())            
          .setTitle("Love JStock?")
          .setView(view)
          // Add action buttons
          .setPositiveButton("Rate 5 stars \u2605", new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int id) {
                  Utils.showShortToast("Rate");
              }
          })
          .setNegativeButton("No", new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int id) {
                  Utils.showShortToast("No");
              }
          })
          .setNeutralButton("Later", new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int id) {
                  Utils.showShortToast("Later");
              }
          })
          .create();
  
          dialog.setCanceledOnTouchOutside(true);
  
          dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
  
              @Override
              public void onCancel(DialogInterface dialog) {
                  Utils.showShortToast("Back button pressed?");
              }
          });
  
          dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
  
              @Override
              public void onDismiss(DialogInterface dialog) {
                  // TODO Auto-generated method stub
                  Utils.showShortToast("Back button pressed?");
              }
          });
  
          return dialog;
      }
  
  }
  </code></pre>
  
  <hr>
  
  <pre><code>    FragmentManager fm = fragmentActivity.getSupportFragmentManager();
      if (fm.findFragmentByTag(RATE_APP_DIALOG_FRAGMENT) != null) {
          return;
      }
  
      RateAppDialogFragment rateAppDialogFragment = RateAppDialogFragment.newInstance();
      rateAppDialogFragment.show(fm, RATE_APP_DIALOG_FRAGMENT);  
  </code></pre>