java.lang.IllegalStateException: не подключено. Вызов connect () - API YouTube

Я пытаюсь заставить ThumbnailView работать с моим ArrayAdapter, но получаю следующую ошибку:

java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
        at com.google.android.youtube.player.internal.r.i(Unknown Source)
        at com.google.android.youtube.player.internal.o.k(Unknown Source)
        at com.google.android.youtube.player.internal.o.a(Unknown Source)
        at com.google.android.youtube.player.internal.p.<init>(Unknown Source)
        at com.google.android.youtube.player.internal.ac.a(Unknown Source)
        at com.google.android.youtube.player.YouTubeThumbnailView$a.a(Unknown Source)

Мой ArrayAdapter выглядит так:

Код для ArrayAdapter

Мой xml video_items.xml выглядит так:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@drawable/listviewbox"
    android:padding="10dp"
    android:layout_height="match_parent">

    <!-- Video Thumbnail -->
    <com.google.android.youtube.player.YouTubeThumbnailView
        android:id="@+id/imageView_thumbnail"
        android:layout_width="85dp"
        android:layout_height="85dp"
        android:layout_alignParentLeft="true"
        android:layout_margin="5dp"
        android:background="@color/panelcolor"
        android:scaleType="centerCrop" />

    <!-- Video Title -->
    <TextView
        android:id="@+id/video_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/imageView_thumbnail"
        android:layout_toRightOf="@+id/imageView_thumbnail"
        android:paddingBottom="5dp"
        android:paddingRight="5dp"
        android:text="@string/videotext"
        android:textColor="@android:color/black"
        android:textSize="16sp" />

</RelativeLayout>

Что здесь может быть не так?


person Sanjana Nair    schedule 24.02.2016    source источник
comment
вы получаете решение? у меня такая же ошибка   -  person Anant Shah    schedule 27.08.2016


Ответы (2)


То же самое произошло со мной, когда я показывал YoutubeThumbnailViews внутри длинного ListView. Я нашел решение, упомянутое f.e. здесь: https://github.com/youtube/yt-android-player/issues/2#issuecomment-58913900 или здесь: https://code.google.com/p/gdata-issues/issues/detail?id=7533#c6

Решение состоит в том, чтобы обернуть YoutubeThumbnailView внутри объекта ViewHolder, отслеживая его состояние инициализации. Метод initialize(..) нельзя вызывать несколько раз.

К сожалению, исключение не приводит к этому быстро.

person jayearn    schedule 29.08.2016

относится к: java.lang .IllegalStateException: не подключен. Вызовите connect() и дождитесь вызова onConnected()

У меня та же проблема "YouTubeThumbnailView Not connected. Call connect() and wait for onConnected() to be called" в RecyclerView.Adapter при быстрой прокрутке, и в recylerView есть 3 миниатюры YouTube.

В адаптере ставлю так: поле: private boolean readyForLoadingYoutubeThumbnail = true; и в onBindViewHolder

/**
 * https://issuetracker.google.com/issues/35176819#c6
 * https://github.com/youtube/yt-android-player/issues/2#issuecomment-58913900
 * YouTubeThumbnailView Not connected. Call connect() and wait for onConnected() to be called
 */
Log.d(TAG, "readyForLoadingYoutubeThumbnail" + readyForLoadingYoutubeThumbnail);
final YouTubeInitializationResult result = YouTubeApiServiceUtil.isYouTubeApiServiceAvailable(activity);
if (readyForLoadingYoutubeThumbnail) {
    Log.d(TAG, "initializing for youtube thumbnail view...");
    readyForLoadingYoutubeThumbnail = false;
    holder.youTubeThumbnailView.initialize("aaaaaaaaaaaaa", new YouTubeThumbnailView.OnInitializedListener() {
        @Override
        public void onInitializationSuccess(final YouTubeThumbnailView youTubeThumbnailView, final YouTubeThumbnailLoader youTubeThumbnailLoader) {

            youTubeThumbnailLoader.setVideo(videoId);
            youTubeThumbnailLoader.setOnThumbnailLoadedListener(new YouTubeThumbnailLoader.OnThumbnailLoadedListener(){

                @Override
                public void onThumbnailLoaded(YouTubeThumbnailView childYouTubeThumbnailView, String s) {
                    childYouTubeThumbnailView.setVisibility(View.VISIBLE);
                    holder.relativeLayoutOverYouTubeThumbnailView.setVisibility(View.VISIBLE);
                    youTubeThumbnailLoader.release(); // spy ga memory lick
                }

                @Override
                public void onThumbnailError(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader.ErrorReason errorReason) {
                    youTubeThumbnailLoader.release(); // spy ga memory lick
                }
            });
            youTubeThumbnailView.setColorFilter(Color.rgb(123, 123, 123), android.graphics.PorterDuff.Mode.MULTIPLY);

            readyForLoadingYoutubeThumbnail = true;
        }

        @Override
        public void onInitializationFailure(YouTubeThumbnailView youTubeThumbnailView, YouTubeInitializationResult youTubeInitializationResult) {
            //do nohing.. ada error, tambahin method ini jalan, error-nya lupa...
            readyForLoadingYoutubeThumbnail = true;
        }
    });
}

Это работает для меня...

person Rudi Wijaya    schedule 07.12.2017