---
title: "Android ViewPager having same instance every time"  
description: "Android ViewPager having same instance every time"  
author: "Anonymous User"  
published: 2015-10-30  
updated: 2015-10-30  
canonical: https://www.mindstick.com/forum/33546/android-viewpager-having-same-instance-every-time  
category: "android"  
tags: ["android", "android controls"]  
reading_time: 7 minutes  

---

# Android ViewPager having same instance every time

I have a [viewPager](https://answers.mindstick.com/qa/40980/what-is-viewpager) with for 10 pages. In all of theses pages, I have a YouTubePlayer with a different id [video](https://www.mindstick.com/articles/290133/6-necessary-preparations-you-need-before-editing-a-video).The [problem](https://yourviews.mindstick.com/view/81399/tackling-the-problem-of-unemployment-during-corona-pandemic) is that all the YouTubePlayer [component](https://www.mindstick.com/articles/12262/learn-how-to-make-a-component-in-magento-2) has the same video at the same time.\
\
**Concretely :**When the first [page](https://www.mindstick.com/articles/13031/why-to-make-a-wikipedia-page) is displayed, the YouTubePlayer show the first video, so all seems to be ok. When I try to scroll to the 2nd page, I can see that the 2nd YouTubePlayer show the same video. When the 2nd page is completely displayed (After scrolling), behind the [view](https://yourviews.mindstick.com/view/84701/layoffs-in-google-india-2023-view) pager [prepare](https://www.mindstick.com/blog/12710/ibm-c1000-019-2019-march-exam-questions-are-out-download-and-prepare) the 3rd page. So on the 3rd page the 3rd id video is set to the YouTubePlayer component. At that moment the 2nd page currently displayed [switch](https://www.mindstick.com/blog/104495/switch-bringing-new-advancements-in-the-education-management-system) automatically to the 3rd video.\
\
It was like if the [instance](https://www.mindstick.com/forum/155658/testing-connection-to-cloud-sql-instance-with-a-mysql-client-from-vm-instance) of YouTubePlayer was single for all the pages. But on each page new FragmentYouTubePlayer() is correctly called.\
I don't understand where is the problem. Finally, I [wonder](https://yourviews.mindstick.com/story/2441/wheatgrass-juice-wonder-for-your-health) if it's possible to use severals YouTubePlayer component (in a viewpager) at the same time or not ?

## Replies

### Reply by Anonymous User

YouTubePlayer follows the Singleton pattern controlling all the different YouTubePlayerView instances. \
Just out of curiouslty i have implelemented a sample for this and it worked for me, so my code may help you analyze your problem\
In my main activity, using PagerAdapter :

```
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {    public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {        super(fm);    }    @Override    public android.support.v4.app.Fragment getItem(int position) {        fragmentYouTubeContent = FragmentYouTubeContent.create(position);        return fragmentYouTubeContent;    }    @Override    public int getCount() {        int nb = 3;        return nb;    }}My FragmentYouTubeContent.classpackage com.orange.OrangeJobs;
```

\
\
import java.util.List;

```
import com.google.android.youtube.player.YouTubeInitializationResult;import com.google.android.youtube.player.YouTubeStandalonePlayer;import com.google.android.youtube.player.YouTubeThumbnailLoader;import com.google.android.youtube.player.YouTubeThumbnailView;import android.support.v4.app.Fragment;import android.annotation.SuppressLint;import android.app.Dialog;import android.content.Intent;import android.content.pm.ResolveInfo;import android.content.res.Configuration;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.FrameLayout;import android.widget.TextView;import android.widget.Toast;public class FragmentYouTubeContent extends Fragment implements YouTubeThumbnailView.OnInitializedListener {      public static final int REQ_START_STANDALONE_PLAYER = 101;      private static final int REQ_RESOLVE_SERVICE_MISSING = 2;      private static final int RECOVERY_DIALOG_REQUEST = 1;    /**     * The fragment's page number.     */    private int mPageNumber;    private String urlYouTube;    private boolean canHideStatusBar = false;    private Dialog errorDialog;    FrameLayout rl;    private YouTubeThumbnailView thumbnailView;    /**     * Factory method for this fragment class. Constructs a new fragment for the given page number.     */    public static FragmentYouTubeContent create(int pageNumber) {        FragmentYouTubeContent fragment = new FragmentYouTubeContent();        fragment.setPageNumber(pageNumber);        return fragment;    }    public FragmentYouTubeContent() {    }    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    @SuppressLint("InlinedApi")    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        setRetainInstance(true);        ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.youtube, container, false);        urlYouTube = "YOUR_VIDEO_URL";        if (!"".equals(urlYouTube)) {            thumbnailView = (YouTubeThumbnailView) rootView.findViewById(R.id.youtubethumbnailview);            thumbnailView.initialize(Params.YOUTUBE_KEY, this);            thumbnailView.setOnClickListener(new OnClickListener(){                @Override                public void onClick(View arg0) {                    // Launch standalone YoutTube player                    Intent intent = null;                    intent = YouTubeStandalonePlayer.createVideoIntent(getActivity(), YOUTUBE_KEY, urlYouTube, 0, true, false);                    if (intent != null) {                      if (canResolveIntent(intent)) {                          canHideStatusBar = true;                          startActivityForResult(intent, REQ_START_STANDALONE_PLAYER);                      } else {                          // Could not resolve the intent - must need to install or update the YouTube API service.                          YouTubeInitializationResult                                .SERVICE_MISSING                                .getErrorDialog(getActivity(), REQ_RESOLVE_SERVICE_MISSING).show();                      }                    }                }});        }        return rootView;    }    @Override    public void onResume() {        super.onResume();        boolean isLandscape = false;        int currentOrientation = getResources().getConfiguration().orientation;        if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {            isLandscape = true;        }        else {            isLandscape = false;        }                if (canHideStatusBar && this.isVisible() && isLandscape) {            Utils.hideStatusBar(getActivity());            canHideStatusBar = false;        }    }    @Override    public void onPause() {        super.onPause();    }        @Override    public void onInitializationSuccess(YouTubeThumbnailView thumbnailView, YouTubeThumbnailLoader thumbnailLoader) {      thumbnailLoader.setVideo(urlYouTube);    }    @Override    public void onInitializationFailure(YouTubeThumbnailView thumbnailView, YouTubeInitializationResult errorReason) {        if (errorReason.isUserRecoverableError()) {            if (errorDialog == null || !errorDialog.isShowing()) {              errorDialog = errorReason.getErrorDialog(getActivity(), RECOVERY_DIALOG_REQUEST);              errorDialog.show();            }          } else {            String errorMessage = String.format(getString(R.string.error_thumbnail_view), errorReason.toString());            Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show();          }    }    // ***** Private methods *************************************************************************************    private boolean canResolveIntent(Intent intent) {        List<ResolveInfo> resolveInfo = getActivity().getPackageManager().queryIntentActivities(intent, 0);        return resolveInfo != null && !resolveInfo.isEmpty();    }    // ***** Properties methods *************************************************************************************    /**     * Returns the page number represented by this fragment object.     */    public int getPageNumber() {        return mPageNumber;    }    /**     * @param pageNumber the pageNumber to set     */    public void setPageNumber(int pageNumber) {        this.mPageNumber = pageNumber;    }    /**     * @return the canHideStatusBar     */    public boolean isCanHideStatusBar() {        return canHideStatusBar;    }    /**     * @param canHideStatusBar the canHideStatusBar to set     */    public void setCanHideStatusBar(boolean canHideStatusBar) {        this.canHideStatusBar = canHideStatusBar;    }}
```

\
My layout : youtube.xml

```
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:clipToPadding="false"              android:background="@color/black"              android:scrollbarStyle="outsideOverlay"              android:orientation="horizontal" >    <com.google.android.youtube.player.YouTubeThumbnailView                android:id="@+id/youtubethumbnailview"                android:layout_width="match_parent"                android:layout_height="match_parent" />        <ImageView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:contentDescription="@string/empty_string"        android:src="@drawable/ic_media_embed_play"             /></RelativeLayout>
```


---

Original Source: https://www.mindstick.com/forum/33546/android-viewpager-having-same-instance-every-time

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
