2016-11-16 190 views
3

我有一個活動叫VideoActivity。下面的youtubeplayerview有videos.On的列表中的第一次視頻是loading.When我點擊一個項目,然後去到另一個活動,然後返回到該活動,它不會播放。我可以知道原因嗎?YouTube播放器的視頻不加載

下面是代碼

public class VideoActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener { 

public Video video; 
private RecyclerView recyclerVideos; 
private static final int RECOVERY_DIALOG_REQUEST = 1; 
private YouTubePlayerView youTubeView; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_video); 

    recyclerVideos = (RecyclerView) findViewById(R.id.recyclerVideos); 

    Intent i = getIntent(); 
    video = (Video) i.getSerializableExtra("video"); 

    LinearLayoutManager layoutManager = new LinearLayoutManager(this); 
    layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); 
    recyclerVideos.setLayoutManager(layoutManager); 

    new VideoAsyncTask().execute(); 

} 

@Override 
public void onInitializationFailure(YouTubePlayer.Provider provider, 
            YouTubeInitializationResult errorReason) { 

    if (errorReason.isUserRecoverableError()) { 
     errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show(); 
    } else { 
     String errorMessage = String.format(
       getString(R.string.error_player), errorReason.toString()); 
     Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show(); 
    } 
} 

@Override 
public void onInitializationSuccess(YouTubePlayer.Provider provider, 
            YouTubePlayer player, boolean wasRestored) { 

    if (!wasRestored) { 
     player.cueVideo(video.Videoid); 
     player.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT); 
    } 
} 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == RECOVERY_DIALOG_REQUEST) { 
     // Retry initialization if user performed a recovery action 
     getYouTubePlayerProvider().initialize(Constants.DEVELOPER_KEY, this); 
    } 
} 

private YouTubePlayer.Provider getYouTubePlayerProvider() { 
    return (YouTubePlayerView) findViewById(R.id.youtube_view); 
} 

private class VideoAsyncTask extends AsyncTask<Void, Void, Video> { 

    @Override 
    protected void onPreExecute() { 

    } 

    @Override 
    protected Video doInBackground(Void... params) { 

     try { 
     return webservice(); 

     } catch (Exception e1) { 
      e1.printStackTrace(); 
      return null; 
     } 
    } 

    protected void onPostExecute(final Video video) { 
     try { 
      if (video == null) { 
       return; 
      } 

      VideosAdapter videoAdapter = new VideosAdapter(video.videos,VideoActivity.this); 
      recyclerVideos.setAdapter(videoAdapter); 
    youTubeView.initialize(Constants.DEVELOPER_KEY, VideoActivity.this); 

     } catch (Throwable ignored) {} 
    } 
} 
} 

回答

1

是的,我的解決問題。

步驟1:添加youtubeview到的LinearLayout

步驟2:上的onResume除去視圖並添加youtubeview再次的LinearLayout時返回到活動

步驟3:停止在回新的YouTube視頻

+0

請問您可以添加更多關於如何實現這一點的細節。我嘗試了你的腳步,但仍然無法工作。謝謝。 –

+0

@DucLe:嘿,我在xml中創建了一個LinearLayout,並將youtubeview添加到了LinearLayout中,然後初始化了它。如果我再次從另一個活動來到這個活動,那麼在onResume中,我刪除了該視圖並再次添加它。 – Debugger

0
@Override 
public void onResume(){ 
super.onResume(); 
try { 
     if (video == null) { 
      return; 
     } 

     YouTubePlayer.loadVideo(String videoId, int timeMillis); 

    } catch (Throwable ignored) {} 
} 
+0

我已經試過這種方法。但視頻不加載 – Debugger

+0

檢查更新回答r – sasikumar

+0

我的朋友沒有工作 – Debugger

0

嘗試完成的活動,當你離開它, 或初始化簡歷上的youtubeplay代替OnCreate中

@Override 
public void onResume(){ 
    super.onResume(); 
    new VideoAsyncTask().execute();} 
+0

它不起作用 – Debugger

相關問題