我必须重构一些旧代码,而且我目前正在攻击隔离墙。显然这段代码用于加载不同类型的视频格式,但现在它会输入.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();
}
编辑:
我通过不懒惰解决了这个问题。只是创建一个这样的视频而不将其附加到自己的活动上只是糟糕的编码。我创建了一个简单的活动,在上面的片段中启动了一个intent来调用该活动,一切都很好。
......除了ICS之外的所有事情。它不会在ICS中运行。但那将是一个不同的问题。
答案 0 :(得分: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();
}
}