1

我必须重构一些旧代码,目前正碰壁。显然,这段代码用于加载不同类型的视频格式,但现在它引入了 .MP4,这意味着它曾经调用的 WebView 无法再播放视频。鉴于我的时间非常有限,我试图在 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 中运行。但这将是一个不同的问题。

4

1 回答 1

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();
    }
}
于 2012-06-25T17:28:54.110 回答