Как мне сделать загрузочную заставку один раз?

Итак... Я разработал заставку, которая работает успешно. Как я могу заставить его работать один раз (и только один раз)? Я хотел бы создать экран регистрации, но хочу, чтобы он отображался для пользователя только один раз.

Помогите!

Амани Суонн

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.content.Intent;
import com.nfc.linkingmanager.R;

public class SplashScreen extends Activity {

private boolean mIsBackButtonPressed;
private static final int SPLASH_DURATION = 1000; 

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.splash_screen);

    Handler handler = new Handler();


    handler.postDelayed(new Runnable() {

        @Override
        public void run() {



            finish();

            if (!mIsBackButtonPressed) {

                Intent intent = new Intent(SplashScreen.this, NewCore.class);
                SplashScreen.this.startActivity(intent);
           }

        }

    }, SPLASH_DURATION);

}

 @Override
 public void onBackPressed() {
    mIsBackButtonPressed = true;
    super.onBackPressed();

}
}

5 ответов

Использование SharedPreferences сохранить тот факт, что экран уже был отображен; при запуске вы проверяете это, и если да, вы заменяете Activity, начиная следующую и вызывая finish() для заставки сразу.

Вы должны хранить флаг в общих настройках, как это

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this );
finish();
if (prefs.getBoolean("SplashFlag", false)&&!mIsBackButtonPressed){

 Intent intent = new Intent(SplashScreen.this, NewCore.class);
                SplashScreen.this.startActivity(intent);
}else {
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("SplashFlag", true); // value to store
//again there are values for int, long, string, float, boolean
editor.commit();//This is needed or the edits will not be put into the prefs file
}

На экране регистрации получите данные для входа и сравните их со значениями, которые вы сохранили в общих настройках. или жесткий код, такой как имя пользователя - admin, а пароль - admin. Если оба значения верны, просто войдите в заставку, иначе перенаправьте на другую страницу, как вам угодно.

Есть два способа сделать это

первый

finish();
SplashScreen.this.startActivity(intent);

2-й в вашем манифесте Android, где вы объявили о своей активности на заставке

Добавь это

android:noHistory=true

Используйте SharedPreferences, где вы можете хранить boolean например seenSplash который вы могли бы по умолчанию false. Затем используйте if, который проверяет, ложно ли это, а затем показывает всплеск. После того, как пользователь увидел заставку, Editor где вы меняете это логическое значение на истину.

Не забудь commit() изменение в редакторе.

Другие вопросы по тегам