2016-11-01 3 views
0

Ich habe Video von YouTube laufen angewendet

async Aufgabe für get Daten aus Feuerbasis

Mein Problem ist, dass ich meine Youtube-Videos setzen Links auf Firebase

aber als Start-Aktivität YouTube funktioniert nicht, da es den Wert des variablen Videos für youtube vedio lädt, bevor der Wert von Firebase

012 abgerufen wird

Ich möchte einen Weg, um Wert zu erhalten, bevor die Youtube Code

das ist mein Code eingeben:

private TextView mvalueview1; 
private Firebase mref; 
private YouTubePlayerView youTubePlayerView; 
private YouTubePlayer.OnInitializedListener onInitializedListener; 
private String x; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //fullscreenANDtoolbar(); 

    setContentView(R.layout.watch_youtube); 


    mref = new Firebase("Link_of_firebase_value"); 
    mvalueview1 = (TextView) findViewById(R.id.textView5); 
    mref.addValueEventListener(new ValueEventListener() { 
     @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 

      String value = dataSnapshot.getValue(String.class); 
      mvalueview1.setText(value); 
      x = value; 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 

youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtubeview); 
    final TextView txtView = (TextView) findViewById(R.id.text); 
    txtView.setText(x); 
    onInitializedListener = new YouTubePlayer.OnInitializedListener() { 
     final String VedioUrl = txtView.getText().toString(); 

     public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) { 
      youTubePlayer.loadVideo(VedioUrl); 
     } 

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

     } 
    }; 
    youTubePlayerView.initialize("API_KEY", onInitializedListener); 

} 

Antwort

0

Ich schlage vor, verwenden Sie Rxjava Bibliothek Kette alle Aktionen nacheinander - Sie Video-Pfad erhalten von der Datenbank zuerst, dann warte, bis Spieler bereit ist und dann warte, bis beide diese Aufgaben durch .zip(). first() Bediener abschließen und als Antwort anfängt, Video zu spielen

+0

kannst du meinen Code^_^redigieren –