2012-06-25 89 views
1

我不得不重構一些舊的代碼,我現在正對着牆壁。很明顯,這段代碼用於加載不同類型的視頻格式,但現在它引入了一個.MP4,這意味着它用來調用的WebView不能再播放視頻。考慮到我有非常有限的時間,我試圖在VideoView中玩弄視頻。視頻加載和播放,但VideoView啓動時,活動堆棧會丟失。VideoView丟失堆棧

我已經覆蓋了MediaController類,至少能夠捕獲後退鍵事件。我的問題是:如何加載此VideoView並保留活動堆棧?

我很感謝您的時間和耐心。

這裏是代碼調用VideoView:

public void onListItemClick(ListView l, View v, int position, long id) { 
    Video video = (Video) this.getListAdapter().getItem(position); 
    track("Video", "VOD", video.title); 
    String url = video.link.substring(29); 
    if(DEBUG_MODE) 
     Log.d("TDF", url); 
    url = Kriptonic.getEncryptedURL(url); 

    videoView = new VideoView(_myActivity); 
    _myActivity.setContentView(videoView); 

    Uri uri = Uri.parse(url); 
    mc = new CustomMediaController(_myActivity); 
    videoView.setMediaController(mc); 

    videoView.setVideoURI(uri); 
    videoView.start(); 

} 

編輯:

我通過不懶惰解決了這個。只是創建一個沒有附加到自己活動中的視頻就是糟糕的編碼。我創建了一個簡單的活動,在上面的片段中啓動了一個旨在調用該活動的意圖,一切都很好。

...除了ICS之外的所有東西。它不會在ICS中運行。但這將是一個不同的問題。

回答

0

將前一個視圖緩存在臨時變量中,並在按下後退時將contentView恢復到它。

mainView = _myActivity.getContentView(); 
videoView = new VideoView(_myActivity); 
_myActivity.setContentView(videoView); 

當返回按鈕被按下

@Override 
public void onBackPressed() { 
    if (mainView != null) { 
     _myActivity.setContentView(mainView); 
     mainView = null; 
    } else { 
     super.onBackPressed(); 
    } 
} 
相關問題