private void shareComicUrl() {
    Intent share = new Intent(android.content.Intent.ACTION_SEND);
    share.setType("text/plain");

    // share.putExtra(Intent.EXTRA_SUBJECT, mSharedPreferences.getString(("title" +
    // String.valueOf(sFavorites[sFavoriteIndex])), ""));
    share.putExtra(Intent.EXTRA_SUBJECT, PrefHelper.getTitle(sFavorites[sFavoriteIndex]));
    if (PrefHelper.shareMobile()) {
      share.putExtra(
          Intent.EXTRA_TEXT, "http://m.xkcd.com/" + String.valueOf(sFavorites[sFavoriteIndex]));
    } else {
      share.putExtra(
          Intent.EXTRA_TEXT, "http://xkcd.com/" + String.valueOf(sFavorites[sFavoriteIndex]));
    }
    startActivity(Intent.createChooser(share, this.getResources().getString(R.string.share_url)));
  }
  private boolean modifyFavorites() {
    final int mRemoved = sFavorites[sFavoriteIndex];
    final Bitmap mRemovedBitmap = mComicMap.get(sFavoriteIndex).getBitmap();
    // final String mAlt = mSharedPreferences.getString(("alt" +
    // String.valueOf(sFavorites[sFavoriteIndex])), "");
    // final String mTitle = mSharedPreferences.getString(("title" +
    // String.valueOf(sFavorites[sFavoriteIndex])), "");

    final String mAlt = PrefHelper.getAlt(sFavorites[sFavoriteIndex]);
    final String mTitle = PrefHelper.getTitle(sFavorites[sFavoriteIndex]);

    new DeleteImageTask().execute(mRemoved);

    View.OnClickListener oc =
        new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            Favorites.addFavoriteItem(getActivity(), String.valueOf(mRemoved));
            try {
              FileOutputStream fos =
                  getActivity().openFileOutput(String.valueOf(mRemoved), Context.MODE_PRIVATE);
              mRemovedBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
              fos.close();
            } catch (Exception e) {
              e.printStackTrace();
            }
            /*SharedPreferences sharedPreferences = getActivity().getPreferences(Activity.MODE_PRIVATE);
            SharedPreferences.Editor mEditor = sharedPreferences.edit();

            mEditor.putString(("title" + String.valueOf(mRemoved)), mTitle);
            mEditor.putString(("alt" + String.valueOf(mRemoved)), mAlt);
            mEditor.apply();*/

            PrefHelper.addTitle(mTitle, mRemoved);
            PrefHelper.addAlt(mAlt, mRemoved);

            refresh();
          }
        };

    FloatingActionButton fab = (FloatingActionButton) getActivity().findViewById(R.id.fab);
    Snackbar.make(fab, R.string.snackbar_remove, Snackbar.LENGTH_LONG)
        .setAction(R.string.snackbar_undo, oc)
        .show();
    return true;
  }
    @Override
    public Object instantiateItem(ViewGroup container, final int position) {

      View itemView = mLayoutInflater.inflate(R.layout.pager_item, container, false);
      final PhotoView pvComic = (PhotoView) itemView.findViewById(R.id.ivComic);
      itemView.setTag(position);

      final TextView tvAlt = (TextView) itemView.findViewById(R.id.tvAlt);

      if (PrefHelper.altByDefault()) {
        tvAlt.setVisibility(View.VISIBLE);
      }
      tvAlt.setText(PrefHelper.getAlt(sFavorites[position]));

      // fix for issue #2
      pvComic.setOnDoubleTapListener(
          new GestureDetector.OnDoubleTapListener() {
            @Override
            public boolean onDoubleTap(MotionEvent e) {
              if (pvComic.getScale() < 0.5f * pvComic.getMaximumScale()) {
                pvComic.setScale(0.5f * pvComic.getMaximumScale(), true);
              } else if (pvComic.getScale() < pvComic.getMaximumScale()) {
                pvComic.setScale(pvComic.getMaximumScale(), true);
              } else {
                pvComic.setScale(1.0f, true);
              }
              return true;
            }

            @Override
            public boolean onSingleTapConfirmed(MotionEvent e) {
              if (!PrefHelper.altLongTap()) {
                if (PrefHelper.classicAltStyle()) {
                  toggleVisibility(tvAlt);
                } else {
                  android.support.v7.app.AlertDialog.Builder mDialog =
                      new android.support.v7.app.AlertDialog.Builder(getActivity());
                  mDialog.setMessage(tvAlt.getText());
                  mDialog.show();
                }
              }
              return false;
            }

            @Override
            public boolean onDoubleTapEvent(MotionEvent e) {
              if (e.getAction() == MotionEvent.ACTION_UP) {
                fingerLifted = true;
              }
              if (e.getAction() == MotionEvent.ACTION_DOWN) {
                fingerLifted = false;
              }
              return false;
            }
          });

      // Setup alt text and LongClickListener
      pvComic.setOnLongClickListener(
          new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
              if (fingerLifted && PrefHelper.altLongTap()) {
                if (PrefHelper.altVibration()) {
                  Vibrator vi =
                      (Vibrator) getActivity().getSystemService(MainActivity.VIBRATOR_SERVICE);
                  vi.vibrate(10);
                }
                // tvAlt.setText(PrefHelper.getAlt(sFavorites[sFavoriteIndex]));
                if (PrefHelper.classicAltStyle()) {
                  toggleVisibility(tvAlt);
                } else {
                  android.support.v7.app.AlertDialog.Builder mDialog =
                      new android.support.v7.app.AlertDialog.Builder(getActivity());
                  mDialog.setMessage(tvAlt.getText());
                  mDialog.show();
                }
              }
              return true;
            }
          });
      // setup the title text view
      TextView tvTitle = (TextView) itemView.findViewById(R.id.tvTitle);
      tvTitle.setText(PrefHelper.getTitle(sFavorites[position]));

      if (PrefHelper.invertColors()) {
        float[] colorMatrix_Negative = {
          -1.0f,
          0,
          0,
          0,
          255, // red
          0,
          -1.0f,
          0,
          0,
          255, // green
          0,
          0,
          -1.0f,
          0,
          255, // blue
          0,
          0,
          0,
          1.0f,
          0 // alpha
        };
        ColorFilter cf = new ColorMatrixColorFilter(colorMatrix_Negative);
        pvComic.setColorFilter(cf);
      }

      // load the image
      pvComic.setImageBitmap(mComicMap.get(position).getBitmap());
      if (Arrays.binarySearch(
              mContext.getResources().getIntArray(R.array.large_comics), sFavorites[sFavoriteIndex])
          >= 0) {
        pvComic.setMaximumScale(7.0f);
      }
      // Disable ViewPager scrolling when the user zooms into an image
      pvComic.setOnMatrixChangeListener(
          new PhotoViewAttacher.OnMatrixChangedListener() {
            @Override
            public void onMatrixChanged(RectF rectF) {
              if (pvComic.getScale() > 1.4) {
                mPager.setLocked(true);
              } else {
                mPager.setLocked(false);
              }
            }
          });

      container.addView(itemView);
      return itemView;
    }