【问题标题】:My app was working perfectly but now it keeps crashing我的应用程序运行良好,但现在它不断崩溃
【发布时间】:2020-03-01 20:28:16
【问题描述】:

我正在使用 YouTube Data API v3 在我的应用中搜索 YouTube 视频。 昨晚工作得很好,但现在当我点击搜索按钮时它一直在崩溃。有人可以帮我吗?

我尝试重新生成 API 密钥但同样的错误

当我更改为:返回mVideoList.size();

错误是:E/AndroidRuntime: FATAL EXCEPTION: main
进程:com.example.youtubeexampleproject,PID:7031

java.lang.NullPointerException:尝试在

的空对象引用上调用接口方法“int java.util.List.size()”

YoutubeAdapter.getItemCount(YoutubeAdapter.java:108) 指针指向:return mVideolist.size();

下面的代码错误是:

{
      "code" : 400,   
      "errors" : [ {    
        "domain" : "global",   
        "location" : "fields",   
        "locationType" : "parameter",   
        "message" : "Invalid field selection activity",    
        "reason" : "invalidParameter"   
      } ],   
      "message" : "Invalid field selection activity"
    }

'

query = youtube.search().list("id,sn-p");

        query.setKey(KEY);



        query.setType("video");


        query.setFields("items(id/kind,id/videoId,snippet/title,snippet/description,snippet/thumbnails/high/url/activity)");

    } catch (IOException e) {


        Log.d("YC", "Could not initialize: " + e);
    }
}

public List<VideoItem> search(String keywords) {


    query.setQ(keywords);


    query.setMaxResults(MAXRESULTS);

    try {


        SearchListResponse response = query.execute();


        List<SearchResult> results = response.getItems();


        List<VideoItem> items = new ArrayList<VideoItem>();


        if (results != null) {


            items = setItemsList(results.iterator());
        }

        return items;

公共类 YoutubeAdapter 扩展 RecyclerView.Adapter {

private Context mContext;
private List<VideoItem> mVideoList;


public class MyViewHolder extends RecyclerView.ViewHolder{

    public ImageView thumbnail;
    public TextView video_title, video_id, video_description;
    public RelativeLayout video_view;

    public MyViewHolder(View view) {

        super(view);


        thumbnail =  view.findViewById(R.id.video_thumbnail);
        video_title =  view.findViewById(R.id.video_title);
        video_id = view.findViewById(R.id.video_id);
        video_description =  view.findViewById(R.id.video_description);
        video_view =  view.findViewById(R.id.video_view);
    }
}


public YoutubeAdapter(Context mContext, List<VideoItem> mVideoList) {
    this.mContext = mContext;
    this.mVideoList = mVideoList;
}


@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {


    View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.video_item, parent, false);

    return new MyViewHolder(itemView);
}


@Override
public void onBindViewHolder(MyViewHolder holder, int position) {


    final VideoItem singleVideo = mVideoList.get(position);


    holder.video_id.setText("Video ID : "+singleVideo.getId()+" ");
    holder.video_title.setText(singleVideo.getTitle());
    holder.video_description.setText(singleVideo.getDescription());


    Picasso.get()
            .load(singleVideo.getThumbnailURL()).resize(480,270)
            .centerCrop()
            .into(holder.thumbnail);


    holder.video_view.setOnClickListener(new View.OnClickListener() {


        @Override
        public void onClick(View view) {


            Intent intent = new Intent();
            intent.setClass(mContext, PlayerActivity.class);


            intent.putExtra("VIDEO_ID", singleVideo.getId());
            intent.putExtra("VIDEO_TITLE",singleVideo.getTitle());
            intent.putExtra("VIDEO_DESC",singleVideo.getDescription());

            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


            mContext.startActivity(intent);


        }
    });
}

@Override

  public int getItemCount() {    



       return mVideoList == null ? 0 : mVideoList.size();   


   }  
}'

【问题讨论】:

  • 你能提供一些关于你如何使用 YouTube API 来获取视频列表的代码吗?
  • 用您的代码更新帖子还显示您如何获得“查询”
  • 注意:这段代码运行良好,现在我已经更新了帖子,提前感谢
  • 字段中是否需要“活动”?
  • 不,我不需要它。非常感谢!兄弟,你救了我的命,这就是问题所在!谢谢!

标签: java android nullpointerexception youtube-api


【解决方案1】:

从字段中删除snippet/thumbnails/high/url/activity 并尝试

query.setFields("items(id/kind,id/videoId,snippet/title,snippet/description)");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多