Android studio 在youTubePlayerView中加载多个视频-->;在空对象引用上发布youtubeplyer.release
我尝试使用一个youTubePlayerView,通过单击不同的按钮加载不同的视频。我将视图序列化并加载视频。这很有效。但是,当我点击第二个按钮并通过加载新视频对播放器进行初始化时,出现了故障。 这是我的密码:Android studio 在youTubePlayerView中加载多个视频-->;在空对象引用上发布youtubeplyer.release,android-studio,android-youtube-api,ytplayerview,youtubeplayer,Android Studio,Android Youtube Api,Ytplayerview,Youtubeplayer,我尝试使用一个youTubePlayerView,通过单击不同的按钮加载不同的视频。我将视图序列化并加载视频。这很有效。但是,当我点击第二个按钮并通过加载新视频对播放器进行初始化时,出现了故障。 这是我的密码: @RequiresApi(api = Build.VERSION_CODES.N) private void video() throws IOException { youTubePlayerView.setVisibility(View.VI
@RequiresApi(api = Build.VERSION_CODES.N)
private void video() throws IOException {
youTubePlayerView.setVisibility(View.VISIBLE);
try {
HttpClient client = new DefaultHttpClient(getHttpRequestParams());
HttpGet getJson = new HttpGet(SERVER_ADRESS + "instruments.json");
HttpResponse jsonResponse = client.execute(getJson);
if (200 == jsonResponse.getStatusLine().getStatusCode()) {
InputStream inputStream = jsonResponse.getEntity().getContent();
String json = IOUtils.toString(inputStream);
Instrument[] instrumentsResult = new Gson().fromJson(json, Instrument[].class);
instrumentsResult = Arrays.stream(instrumentsResult).filter(x -> x.analysename.equals(instrumentname)).toArray(Instrument[]::new);
String youtube = instrumentsResult[0].youtube;
Instrument[] instrumentsResult2 = new Gson().fromJson(json, Instrument[].class);
instrumentsResult2 = Arrays.stream(instrumentsResult).filter(x -> x.analysename.equals(instrumentname)).toArray(Instrument[]::new);
String youtube2 = instrumentsResult2[0].youtube;
onInitializedListener = new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.loadVideo(youtube); }
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
Toast.makeText(getApplicationContext(), "Uuuups", Toast.LENGTH_SHORT).show();
}};
onInitializedListener2 = new YouTubePlayer.OnInitializedListener() {
private YouTubePlayer youTubePlayer;
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean wasRestored) {
this.youTubePlayer = youTubePlayer;
if (!wasRestored) youTubePlayer.loadVideo(youtube2);}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
Toast.makeText(getApplicationContext(), "Uuuups", Toast.LENGTH_SHORT).show();
}};
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
youTubePlayerView.initialize("fdhgdfjhfjghfjhgjgfhjfghj", onInitializedListener);
}});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
youTubePlayer.release();
youTubePlayerView.initialize("fdhgdfjhfjghfjhgjgfhjfghj", onInitializedListener2); }
});};
} catch (IOException e) {
e.printStackTrace();
} catch (UnsupportedOperationException e) {
e.printStackTrace();
} catch (JsonSyntaxException e) {
e.printStackTrace(); } }
应用程序停止并显示
java.lang.NullPointerException:尝试调用接口方法
上的“void com.google.android.youtube.player.YouTubePlayer.release()”
空对象引用
你有什么想法吗
谢谢大家!