2

2つの異なるテレビチャンネルを表示するために2つのタブがありますが、タブを切り替えると、それらのアクティビティ(インテント)が実行され続け、それらが混同されます。新しいチャンネルが開始する前に、1つのチャンネルの再生が停止するようにするにはどうすればよいですか?

Activityクラスのコードは次のとおりです。

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.videoview);
    extras = getIntent().getExtras();
    progressDialog = ProgressDialog.show(TvMenuOne.this, "TV1",
            "Please Wait..", true, true);
    PlayVideo();
}

private void PlayVideo() {
    try {
        videoView = (VideoView) findViewById(R.id.surface_view);
        if(extras.getString("id").equals("one")){
            videoView.setVideoPath(pathL);
        }
        if(extras.getString("id").equals("two")){
            videoView.setVideoPath(pathM);
        }

        videoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);
        videoView.setMediaController(new MediaController(TvMenuOne.this));

        videoView.setOnPreparedListener(new OnPreparedListener() {

            public void onPrepared(MediaPlayer mp) {
                progressDialog.dismiss();
                videoView.start();
            }
        });

    } catch (Exception e) {
        progressDialog.dismiss();
        System.out.println("Video Play Error :" + e.toString());
        finish();
    }
}
4

2 に答える 2

0

ねえ、私はこれの解決策を得たと思います::

タブを切り替えるときにこれを行います。

Intent intent= new Intent().setClass(this,SecondClass.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

そして、これを行います...

tabHost.addTab(tabHost.newTabSpec("ABCD") .setIndicator(tabIndicator(...).setContent(intent));

これは、タブから切り替えるたびに、Intent.FLAG_ACTIVITY_CLEAR_TOPが新しいビューを作成することを意味します...

乾杯...

于 2012-12-27T11:26:13.700 に答える
0

onPauseメソッドをオーバーライドすることで解決しました。新しいインテントを表示する前に、アクティビティが一時停止モードに移行するようです。

@Override
public void onPause() {
    super.onPause();
    videoView.stopPlayback();
    videoView.setVisibility(2);
}
于 2012-12-29T08:53:39.423 に答える