@Override
  public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

    inflater.inflate(R.menu.menu_book_detail, menu);

    final MenuItem menuItem = menu.findItem(R.id.action_share);
    mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(menuItem);

    if (mAdapter.getCount() > 0) {
      final int position = mBookDetailPager.getCurrentItem();
      updateShareIntent(mAdapter.getBookTitleForPosition(position));
      updateUserProfile(position);
    } else {
      updateShareIntent(null);
    }
  }
  /**
   * Updates the book owner profile for a particular selection
   *
   * @param position The book page selected
   */
  private void updateUserProfile(int position) {
    final ProfileFragment fragment =
        (ProfileFragment) getChildFragmentManager().findFragmentByTag(FragmentTags.USER_PROFILE);

    if (fragment != null) {
      fragment.setUserId(mAdapter.getUserIdForPosition(position));
    }
  }
  @Override
  public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
    if (loader.getId() == Loaders.SEARCH_BOOKS_ON_PAGER) {

      mAdapter.swapCursor(cursor);

      if (cursor.getCount() > 0) {
        mBookDetailPager.setCurrentItem(mBookPosition);

        /*
         * Viewpager doesn't call on page selected() on the listener if the
         * set item is 0. This is to workaround that
         */

        if (mBookPosition == 0 && cursor.getCount() > 0) {
          onPageSelected(mBookPosition);
        }
      }
    }
  }
  @Override
  public void onPageSelected(int position) {

    updateShareIntent(mAdapter.getBookTitleForPosition(position));
    updateUserProfile(position);
  }