Video Player使用Google Media Framework Exoplayer的空指针异常

时间:2016-03-17 09:11:21

标签: java android json android-video-player exoplayer

我正在使用GMF示例在我的应用中播放视频,我从实时JSON中获取视频标题和网址,以下是我的JSON示例:

<?php
if ( isset($_POST['name']) ) { // was the form submitted?
   $data['name']= 'welcome '.$name;
   $data ['age']= 'you are '.$age;
print_r(json_encode($data));exit; 
}

?>

这就是我的代码:

MainActivity.java:

var message = data.name + ' ' + data.age;
$('#result').html(message );

每当我点击任何列表项以播放视频时,获取{ "videos": [ { "title":"Video 1", "url":"88.mp4" }, { "title":"Video 2", "url":"l5.mp4" } ]} ,请参阅完整日志

  JSONObject jsono = new JSONObject(data);
  JSONArray jarray = jsono.getJSONArray("videos");

  for (int i = 0; i < jarray.length(); i++) {
       JSONObject object = jarray.getJSONObject(i);

       Videos video = new Videos();

       video.setTitle(object.getString("title"));
       video.setUrl(object.getString("url"));

       videosArrayList.add(video);
   }

我认为应该编写代码,所以我可能知道我在哪里丢失了吗?我错过了什么?我该如何解决呢?

2 个答案:

答案 0 :(得分:2)

当您在doInBackgroud方法中获取响应时,您会创建Videos个对象并将标题和网址放入其中,但是当您创建播放器时,请在调用时尝试获取Video对象{ {1}},但从未设置过。在那一点上是你的NullPointerException。

答案 1 :(得分:1)

在代码的这一部分

Videos video = new Videos();

video.setTitle(object.getString("title"));
video.setUrl(object.getString("url"));

videosArrayList.add(video);

您从未在video对象Videos中分配video字段(从不致电 public void setVideo(Video video) { this.video = video; })。您使用默认构造函数p ublic Videos() { }将字段video初始化为null

要解决此问题,请添加此行

video.setVideo(new Video(object.getString("url"),VideoType.MP4)))