@Override
  protected void showDialog(Bundle state) {
    mEntries = getEntries();
    mEntryValues = getEntryValues();
    mValues = getValues();

    if (mEntries == null || mEntryValues == null) {
      throw new IllegalStateException(
          "ActionMultiSelectListPreference requires an entries array and "
              + "an entryValues array.");
    }

    boolean[] checkedItems = getSelectedItems();
    String[] str = new String[mEntries.length];
    int length = mEntries.length;
    for (int i = 0; i < length; i++) {
      str[i] = mEntries[i].toString();
    }

    mActionSheet = new ActionSheet(mContext);
    mActionSheet.setMultiChoiceItems(
        str,
        checkedItems,
        new MultiChoiceListener() {

          @Override
          public void onDismiss(ActionSheet actionSheet) {
            mActionSheet = null;
          }

          @Override
          public void onItemToggle(int which) {}

          @Override
          public void onConfirm(boolean[] itemStatus) {
            for (int i = 0; i < itemStatus.length; i++) {
              if (itemStatus[i]) {
                mPreferenceChanged |= mNewValues.add(mEntryValues[i].toString());
              } else {
                mPreferenceChanged |= mNewValues.remove(mEntryValues[i].toString());
              }
            }
            onDialogClosed(true);
          }
        },
        new ActionButton(
            mContext.getString(android.R.string.ok),
            mContext.getResources().getColor(R.color.hw_actionsheet_text_color),
            new OnClickListener() {
              @Override
              public void onClick(View v) {}
            }));

    mNewValues.clear();
    mNewValues.addAll(mValues);
    mActionSheet.showWithDialog();
  }
  public void onActivityDestroy() {
    if (mActionSheet == null) {
      return;
    }

    mActionSheet.dismiss();
    super.onActivityDestroy();
  }