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 に答える