【问题标题】:java.lang.IllegalStateException: Not connected. Call connect() - YouTube APIjava.lang.IllegalStateException:未连接。调用 connect() - YouTube API
【发布时间】:2016-06-06 23:48:05
【问题描述】:

我试图让 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 如下所示:

Code for 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>

这里有什么问题?

【问题讨论】:

  • 你得到解决方案了吗?我有同样的错误

标签: java android android-youtube-api


【解决方案1】:

在长 ListView 中显示 YoutubeThumbnailViews 时,我也遇到了同样的情况。我找到了提到的解决方案 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(..) 方法不能被多次调用。

不幸的是,异常并没有很快到达那里。

【讨论】:

    【解决方案2】:

    指:java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called

    我也有同样的问题 “YouTubeThumbnailView Not connected. Call connect() and wait for onConnected() to be called” 在 RecyclerView.Adapter 中快速滚动,recyclerView 中有 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;
            }
        });
    }
    

    这对我有用...

    【讨论】:

      猜你喜欢
      • 2014-04-13
      • 2016-05-19
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多