Android: SplashScreen продолжает загружать независимо от того, что я делаю - PullRequest
1 голос
/ 08 февраля 2011

Давайте попробуем упростить понимание.

Для примера я получил "Page1" и "Page2" и "Page3".ХОРОШО.Я создал заставку на «Page2», чтобы пользователь мог видеть «Page2» в течение определенного времени (5 секунд).и он автоматически перенаправляет его на «Page3», и я также добавил две кнопки на «Page2», чтобы пользователь мог либо нажать «Button1», чтобы перейти к «Page3» быстрее.или «Button2», которая идет на «Page 1» Хорошо, я все сделал правильно.Но если «Страница2» включен, и пользователь ничего не трогает, он переводит его в «Страницу3». Моя проблема в том, что пользователь может касаться чего угодно «Кнопки1» или «Кнопки2», он направляет его в «Страницу3», и если он касается"Button2" и переходит к "Page1" (после того, как истек временной интервал заставки на "Page2", он автоматически перенаправляет его с "Page1" на "Page3"

. Пожалуйста, помогите.Код

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.content.Intent;
import android.view.View.OnClickListener;
import android.widget.Button;



public class StartGame extends Activity {

    // ===========================================================
    // Fields
    // ===========================================================

    private final int SPLASH_DISPLAY_LENGHT = 3000;

    // ===========================================================
    // "Constructors"
    // ===========================================================

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.startgame);

        /* New Handler to start the Menu-Activity 
         * and close this Splash-Screen after some seconds.*/
        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                /* Create an Intent that will start the Menu-Activity. */
                Intent mainIntent = new Intent(StartGame.this,Fail.class);
                StartGame.this.startActivity(mainIntent);
                StartGame.this.finish();
            }
        }, SPLASH_DISPLAY_LENGHT);

Пожалуйста, помогите, спасибо. Wahid

РЕДАКТИРОВАТЬ:

извините, я новичок и я действительно не знаю, как создавать переменные, пожалуйстаесли вы можете поделиться со мной некоторыми своими знаниями и показать мне исходный код.

Если переменные означают кнопки, это уже там, но я не сделал

1 Ответ

3 голосов
/ 08 февраля 2011

Вам нужно отменить вызов postDelayed, если ваша деятельность 2 была остановлена ​​нажатием кнопки.

Итак, сначала вам нужно создать переменные из вашего runnable и вашего обработчика.

и затем при нажатии любой кнопки вы сможете позвонить:

myHandler.removeCallbacks(myRunnable);

, что остановит его запуск, если это больше не нужно.

Правка для новичкапрофиль ОП:

    myRunnable = new Runnable(){
        @Override
        public void run() {
            /* Create an Intent that will start the Menu-Activity. */
            Intent mainIntent = new Intent(StartGame.this,Fail.class);
            StartGame.this.startActivity(mainIntent);
            StartGame.this.finish();
        }
    }

    myHandler = new Handler();
    myHandler.postDelayed(myRunnable, SPLASH_DISPLAY_LENGHT);
...