2013-05-28 31 views
6

’a sıfırlama Android’de oldukça yeni olduğum için lütfen bana katıl. Youtube oynatıcısını bir parça sınıfında başlatmaya çalışıyorum. aşağıdaki gibi Google zaten gider Etkinliğinizde başlatmak için bir yöntem sağlamıştır: Bu kodu kullanarak çalıştıYouTube oynatıcısını Fragman

package com.examples.youtubeapidemo; 

import com.google.android.youtube.player.YouTubeBaseActivity; 
import com.google.android.youtube.player.YouTubePlayer; 
import com.google.android.youtube.player.YouTubePlayerView; 

import android.os.Bundle; 


public class PlayerViewDemoActivity extends YouTubeFailureRecoveryActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.playerview_demo); 

    YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view); 
    youTubeView.initialize(DeveloperKey.DEVELOPER_KEY, this); 
    } 

    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, 
     boolean wasRestored) { 
    if (!wasRestored) { 
     player.cueVideo("wKJ9KzGQq0w"); 
    } 
    } 

    @Override 
    protected YouTubePlayer.Provider getYouTubePlayerProvider() { 
    return (YouTubePlayerView) findViewById(R.id.youtube_view); 
    } 

} 

ama onun çalışmıyor:

public class TabFragment5 extends YouTubePlayerFragment implements YouTubePlayer.OnInitializedListener { 
    /** (non-Javadoc) 
    * @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) 
    */ 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     if (container == null) { 
      return null; 
     } 
      YouTubePlayerFragment yf = newInstance(); //new YouTubePlayerFragment(); 
     yf.initialize("dsds", this); 
     return (LinearLayout)inflater.inflate(R.layout.tab_frag4_layout, container, false); 
    } 

    @Override 
    public void onInitializationFailure(Provider arg0, 
      YouTubeInitializationResult arg1) { 
     // TODO Auto-generated method stub 

    } 

     @Override 
     public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, 
      boolean wasRestored) { 
     if (!wasRestored) { 
      player.cueVideo("nCgQDjiotG0"); 
     } 
     } 
} 

herkes için eşit API verebilirseniz çok minnettar olacaktır fragmanı.

Teşekkür

cevap

4

deneyin Aşağıdaki örneğe kullanmak:

fragment.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".VideoFragment" > 
    <fragment 
     android:name="com.google.android.youtube.player.YouTubePlayerFragment" 
     android:id="@+id/youtubeplayerfragment" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
</RelativeLayout> 



Fragment oluşturma

VideoFragment videoFragment = VideoFragment.newInstance(VIDEO_ID); 


fragmanı tahrip ve devam elde edildi halinde VideoFragment

public class VideoFragment extends YouTubePlayerSupportFragment { 
    public static final String DEVELOPER_ANDROID_KEY = "KEY"; 

    public static VideoFragment newInstance(String url) { 
     VideoFragment videoFragment = new VideoFragment(); 
     Bundle bundle = new Bundle(); 
     bundle.putString("url", url); 
     videoFragment.setArguments(bundle); 
     videoFragment.init(0); 
     return videoFragment; 
    } 

    private void init(final int time) { 
     initialize(DEVELOPER_ANDROID_KEY, new OnInitializedListener() { 

      @Override 
      public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) { 
      } 

      @Override 
      public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer 
                  player, boolean wasRestored) { 
       mPlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT); 
       id = getArguments().getString("url"); 
       if (!wasRestored) { 
        mPlayer.loadVideo(id, time); 
       } 
      } 
     }); 
    } 
}  
+0

(ör Etkinliği Saklamıyor ayarı)), mPlayer'ım artık geçerli değil. Youtube'un kendi durumunu geri yükleyebildiği gibi, başlatma artık bir kez daha OnInitilizationSuccess'a ulaşmıyor. MPlayer'ı nasıl geri alabilirim? – Elye

+1

@Elye: Senaryonuza bir çözüm buldunuz mu? –

+0

@Elye, youtube öğesinin her iki yön için de aynı düzeni kullandığını, dolayısıyla onConfigurationChanged öğesinde hiçbir değişiklik yapılmadığını görünüyor – user5599807