Вызов новой активности после завершения видео

Я пытаюсь реализовать onCompletionListener, чтобы после завершения заставки вызывалась вкладка Activity (где содержится весь контент). Проблема в том, что после воспроизведения видео не вызывается следующее действие. Вот код:

package com.companyname.cpny;


import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.widget.VideoView;

public class splash extends Activity 

     {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
VideoView vs = (VideoView) findViewById(R.id.imlsplash);
Uri uri = Uri.parse("android.resource://"+getPackageName() + "/"+R.raw.iphonesplashfinal);
vs.setVideoURI(uri);
vs.start();     
vs.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

    public void onCompletion(MediaPlayer mp) {
        // TODO Auto-generated method stub
            Intent main = new Intent(splash.this, tabhost.class);
                splash.this.startActivity(main);
                splash.this.finish();
    }

});
}
}

person Derek Williams    schedule 08.08.2011    source источник
comment
Вы проверили, что onCompletion вызывается? Возможно, вам потребуется установить onCompletionListener перед вызовом start().   -  person Austin Hanson    schedule 08.08.2011
comment
Как я могу это проверить? Все в журнале ошибок выглядит так, как будто все вызывается правильно до раздела Public void. Я знаю, что все выше строки vs.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { работает нормально, потому что я реализовал над ним onCompletionListener, и видео не воспроизводится.   -  person Derek Williams    schedule 08.08.2011
comment
Установите точку останова в вашем onCompletionListener...   -  person Austin Hanson    schedule 08.08.2011


Ответы (1)


Можешь попробовать это

 vs.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

    public void onCompletion(MediaPlayer mp) {

             splash.this.runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        Intent main = new Intent(splash.this, tabhost.class);
                        splash.this.startActivity(main);
                        splash.this.finish();
                    }
                });
    } 

РЕДАКТИРОВАТЬ: Можете ли вы также сначала зарегистрировать слушателя и вызвать его позже.

 vs.start() 
person PravinCG    schedule 08.08.2011
comment
Действия не нужно запускать в потоке пользовательского интерфейса, так что это, вероятно, не исправит. - person Austin Hanson; 08.08.2011
comment
@Berdon: Вы, вероятно, правы, однако, как правило, я воздерживаюсь от того, чтобы делать что-либо, связанное с основной активностью слушателей. - person PravinCG; 08.08.2011
comment
Да, это не сработало. Может ли это быть проблемой? Активность всплеска — это совершенно другой класс за пределами моей активности вкладки (очевидно). например, активность tabhost не запускает активность заставки; на самом деле наоборот. мне нужно наложить активность заставки на активность моей вкладки, чтобы я мог закончить(); всплеск и табхост просто будут там? Имеет ли это смысл? - person Derek Williams; 08.08.2011
comment
Нет, это не требуется, ключевой вопрос в том, вызывается ли у вас метод onCompletion()? Можете ли вы поставить там точку останова, чтобы проверить, действительно ли она вызывается. - person PravinCG; 08.08.2011
comment
Я не уверен, где поставить точку останова. Это мое первое приложение, в котором я реализовал такой Listener. Скажите, перед какой строкой? - person Derek Williams; 08.08.2011
comment
Добавьте его в первую строку кода внутри вашего метода onCompletion. Кроме того, вы пытались вызвать vs.start() после регистрации своего слушателя? - person PravinCG; 08.08.2011
comment
Дай мне минутку, она не дает передышки; внутри метода... ›:/ - person Derek Williams; 08.08.2011
comment
Хорошо, я не думаю, что мой метод правильно определен. Какие-либо предложения? - person Derek Williams; 08.08.2011
comment
Проблема решена. Все хорошо. Я просто упустил что-то в своем файле манифеста. Всем спасибо за помощь - person Derek Williams; 09.08.2011
comment
@Derok8 Как вы решили проблему? Что вы упустили из виду? - person hendrix; 04.04.2013