public void onClick(View v) {
          // If the user click on these fields, then we assume user has changed some settings.
          settingsChanged = true;

          if (v == colorCheckbox) {
            if (colorCheckbox.isChecked()) {
              colorRow.setVisibility(View.VISIBLE);
            } else {
              colorRow.setVisibility(View.GONE);
              resetToDefaultColors();
            }
          }

          if (v == colorButton) {
            showColorPickerDialog();
          }

          if (v == qTypefaceCheckbox) {
            if (qTypefaceCheckbox.isChecked()) {
              qTypefaceEdit.setVisibility(View.VISIBLE);
            } else {
              qTypefaceEdit.setVisibility(View.GONE);
              setting.setQuestionFont("");
            }
          }

          if (v == aTypefaceCheckbox) {
            if (aTypefaceCheckbox.isChecked()) {
              aTypefaceEdit.setVisibility(View.VISIBLE);
            } else {
              aTypefaceEdit.setVisibility(View.GONE);
              setting.setAnswerFont("");
            }
          }

          if (v == displayInHTMLCheckbox) {
            if (displayInHTMLCheckbox.isChecked()) {
              // Create a AlertDialog for user to select fields display in HTML
              fieldsDisplayedInHTML = setting.getDisplayInHTMLEnum();
              showCardFieldMultipleChoiceAlertDialog(
                  fieldsDisplayedInHTML, R.string.settings_html_display);
            } else {
              fieldsDisplayedInHTML = EnumSet.noneOf(CardField.class);
            }
            if (fieldsDisplayedInHTML.size() == 0) {
              field1Checkbox.setChecked(false);
            }
          }

          if (v == field1Checkbox) {
            if (field1Checkbox.isChecked()) {
              questionFields = setting.getQuestionFieldEnum();
              showCardFieldMultipleChoiceAlertDialog(questionFields, R.string.settings_field1);
            } else {
              questionFields = EnumSet.of(CardField.QUESTION);
            }
            if (questionFields.size() == 0) {
              field1Checkbox.setChecked(false);
            }
          }

          if (v == field2Checkbox) {
            if (field2Checkbox.isChecked()) {
              answerFields = setting.getAnswerFieldEnum();
              showCardFieldMultipleChoiceAlertDialog(answerFields, R.string.settings_field2);
            } else {
              answerFields = EnumSet.of(CardField.ANSWER);
            }
            if (answerFields.size() == 0) {
              field2Checkbox.setChecked(false);
            }
          }
          if (v == qTypefaceEdit) {
            FileBrowserFragment df = new FileBrowserFragment();
            Bundle b = new Bundle();
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".ttf");
            b.putString(FileBrowserFragment.EXTRA_DEFAULT_ROOT, AMEnv.DEFAULT_ROOT_PATH);
            b.putBoolean(FileBrowserFragment.EXTRA_DISMISS_ON_SELECT, true);
            df.setArguments(b);
            df.setOnFileClickListener(qTypefaceEditFbListener);
            df.show(getSupportFragmentManager(), "qTypefaceEditFB");
          }

          if (v == aTypefaceEdit) {
            FileBrowserFragment df = new FileBrowserFragment();
            Bundle b = new Bundle();
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".ttf");
            b.putString(FileBrowserFragment.EXTRA_DEFAULT_ROOT, AMEnv.DEFAULT_ROOT_PATH);
            b.putBoolean(FileBrowserFragment.EXTRA_DISMISS_ON_SELECT, true);
            df.setArguments(b);
            df.setOnFileClickListener(aTypefaceEditFbListener);
            df.show(getSupportFragmentManager(), "aTypefaceEditFB");
          }
        }