@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); }