2011-09-06 52 views
2

在我的Android應用程序中,我試圖在我正在播放的視頻結束後回到我的主要活動。我已經嘗試了很多解決方法,但我找不到從視頻onCompletionListener調用StartActivity的方法 - 我得到的「無法從類型」Activity「錯誤中對非靜態方法startActivity(Intent)進行靜態引用。視頻播放完畢時開始活動

我試圖從videoView之前的活動獲取上下文,並將其傳遞給intent/startActivity。這允許應用程序進行編譯,但後來我得到了一個運行時異常。

下面是代碼,因爲它現在,它得到「不能做一個靜態引用」的錯誤 - 任何幫助將不勝感激!

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

你有沒有試過我的代碼? – Siten

+0

非常感謝代碼 - 我會盡快嘗試 – scrappley

回答

0

如果你知道視頻的時候,那麼你嘗試:

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(); 

,如果你不知道,那麼你得到的時間作爲時間:

int vtime = vd.getDuration(); 

然後在線程休眠時,你只需要把這個整數。

0

如果您從活動開始了視頻活動,您希望稍後再回來,只需在視頻結尾處調用finish()即可完成該任務。

再次啓動主Activity會創建一個不需要的活動堆棧。

相關問題