2012-06-25 2 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

이전 뷰를 임시 변수에 캐시하고 back 키를 누르면 contentView를 복원합니다. 백 버튼

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

누름

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

관련 문제