public void showResults() {

    // log the activity as complete
    isOnResultsPage = true;
    quiz.mark(prefs.getString(PrefsActivity.PREF_LANGUAGE, Locale.getDefault().getLanguage()));
    // save results ready to send back to the quiz server
    String data = quiz.getResultObject().toString();
    Log.d(TAG, data);

    DbHelper db = DbHelper.getInstance(super.getActivity());
    long userId = db.getUserId(SessionManager.getUsername(getActivity()));

    QuizAttempt qa = new QuizAttempt();
    qa.setCourseId(course.getCourseId());
    qa.setUserId(userId);
    qa.setData(data);

    qa.setActivityDigest(activity.getDigest());
    qa.setScore(quiz.getUserscore());
    qa.setMaxscore(quiz.getMaxscore());
    qa.setPassed(this.getActivityCompleted());
    qa.setSent(false);
    db.insertQuizAttempt(qa);

    // Check if quiz results layout is already loaded
    View quizResultsLayout = getView().findViewById(R.id.widget_quiz_results);
    if (quizResultsLayout == null) {
      // load new layout
      View C = getView().findViewById(R.id.quiz_progress);
      ViewGroup parent = (ViewGroup) C.getParent();
      int index = parent.indexOfChild(C);
      parent.removeView(C);
      C =
          super.getActivity()
              .getLayoutInflater()
              .inflate(R.layout.widget_quiz_results, parent, false);
      parent.addView(C, index);
    }

    TextView title = (TextView) getView().findViewById(R.id.quiz_results_score);
    title.setText(
        super.getActivity().getString(R.string.widget_quiz_results_score, this.getPercent()));

    if (this.isBaseline) {
      TextView baselineExtro = (TextView) getView().findViewById(R.id.quiz_results_baseline);
      baselineExtro.setVisibility(View.VISIBLE);
      baselineExtro.setText(super.getActivity().getString(R.string.widget_quiz_baseline_completed));
    }

    // TODO add TextView here to give overall feedback if it's in the quiz

    // Show the detail of which questions were right/wrong
    if (quiz.getShowFeedback() == Quiz.SHOW_FEEDBACK_ALWAYS
        || quiz.getShowFeedback() == Quiz.SHOW_FEEDBACK_ATEND) {
      ListView questionFeedbackLV = (ListView) getView().findViewById(R.id.quiz_results_feedback);
      ArrayList<QuizFeedback> quizFeedback = new ArrayList<QuizFeedback>();
      List<QuizQuestion> questions = this.quiz.getQuestions();
      for (QuizQuestion q : questions) {
        if (!(q instanceof Description)) {
          QuizFeedback qf = new QuizFeedback();
          qf.setScore(q.getScoreAsPercent());
          qf.setQuestionText(
              q.getTitle(
                  prefs.getString(PrefsActivity.PREF_LANGUAGE, Locale.getDefault().getLanguage())));
          qf.setUserResponse(q.getUserResponses());
          qf.setFeedbackText(
              q.getFeedback(
                  prefs.getString(PrefsActivity.PREF_LANGUAGE, Locale.getDefault().getLanguage())));
          quizFeedback.add(qf);
        }
      }
      QuizFeedbackAdapter qfa = new QuizFeedbackAdapter(super.getActivity(), quizFeedback);
      questionFeedbackLV.setAdapter(qfa);
    }

    // Show restart or continue button
    Button restartBtn = (Button) getView().findViewById(R.id.quiz_results_button);

    if (this.isBaseline) {
      restartBtn.setText(super.getActivity().getString(R.string.widget_quiz_baseline_goto_course));
      restartBtn.setOnClickListener(
          new View.OnClickListener() {
            public void onClick(View v) {
              QuizWidget.this.getActivity().finish();
            }
          });
    } else {
      restartBtn.setText(super.getActivity().getString(R.string.widget_quiz_results_restart));
      restartBtn.setOnClickListener(
          new View.OnClickListener() {
            public void onClick(View v) {
              QuizWidget.this.restart();
            }
          });
    }
  }