2011-09-06 3 views
2

Dans mon application Android, j'essaie simplement de revenir à mon activité principale une fois qu'une vidéo que je joue se termine. J'ai essayé beaucoup de solutions de contournement, mais je ne peux pas trouver un moyen d'appeler StartActivity à partir de la vidéo onCompletionListener - j'obtiens le "impossible de faire une référence statique à la méthode non static startActivity (Intent) de l'activité type" erreur.Début Activité lorsque la lecture de la vidéo est terminée

J'ai essayé d'obtenir un contexte de l'activité qui a précédé videoView, et de passer cela à l'intention/startActivity. Cela a permis à l'application de compiler, mais j'ai ensuite obtenu une exception d'exécution.

Voici le code tel qu'il se présente maintenant, qui obtient l'erreur "impossible de faire une référence statique" - toute aide serait appréciée!

public class Videoscreen extends Activity{ 

public static VideoView myVideoView; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.videoplay); 
    myVideoView = (VideoView) findViewById(R.id.main_videoview); 
    System.out.println("playing video oncreate"); 
    playVideo(); 
} 
public static void playVideo(){ 

    // video finish listener 
    myVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 

     @Override 
     public void onCompletion(MediaPlayer vmp) { 
      Intent intent = new Intent(); 
      intent.setClass(Videoscreen.this, Game.class); 
      Videoscreen.startActivity(intent); 
     } 
    }); 

    String low_word = SpellingView.get_low_word(); 
    Uri bubblesUri = Uri.parse("android.resource://org.lalloinc.ilovetrucks/raw/"+ low_word + "_vid"); 
    myVideoView.setVideoURI(bubblesUri); 
    myVideoView.start(); 

} 

}

+0

avez-vous essayé mon code? – Siten

+0

merci beaucoup pour le code - je vais essayer dès que possible – scrappley

Répondre

0

Si vous connaissez l'heure de la vidéo vous essayez:

String uri1 = "android.resource://" + getPackageName() + "/" + R.raw.race3; 
     vd.setVideoURI(Uri.parse(uri1)); 
     vd.start(); 

new Thread() { 
      public void run() { 
        try{ 

          sleep(50000); 
        } catch (Exception e) { 

        } 
        Intent intent = new Intent(Video.this, Another.class); 
        startActivity(intent); 
        finish(); 
      } 
    }.start(); 

si vous ne connaissez pas le temps, alors vous obtenez le temps:

int vtime = vd.getDuration(); 

Et puis au fil de sommeil, vous venez de mettre cet entier.

0

Si vous avez démarré l'activité vidéo à partir de l'activité à laquelle vous souhaitez revenir plus tard, il suffit d'appeler finish() à la fin de la vidéo pour effectuer le travail. Le démarrage de l'activité principale crée à nouveau une pile d'activités non nécessairement souhaitée.

Questions connexes