2013-03-18 2 views
2

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

Помощь!

Амани Swann

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(); 

} 
} 

ответ

3

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

+0

Я обновил свой исходный код, включив SharedPreferences, но он продолжает сбой ... любые предложения? LogCat и JAVA: http://copytaste.com/b2753 – NoobNinja

+0

@ user2163126 Это действительно трудно отличить от неформатированные текстов, но источник Java не имеет особого смысла, а также, кажется, исключение - как вы даже получаете этот запуск, это даже не действительная Java-программа? –

+0

Он работает отлично, прежде чем добавлять общие настройки. – NoobNinja

0

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

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

+0

Я пробовал это ... но мое приложение закрывает силу. Если вы хотите взглянуть, я включил копию моего LOGCAT и моего обновленного JAVA http://copytaste.com/b2753 – NoobNinja

+0

Извините, но ваш код является беспорядком с этой копией. Взгляните на SplashScreen.java:16. В Интернете есть несколько примеров с SplashScreens и SharedPreferences. Я думаю, у вас есть NPE, чтобы не декларировать их правильно (предположим, не на основе кода или logcat) –

+0

Знаете ли вы о хорошем? Я просто немного погулял и не нашел. – NoobNinja

0

на вашем экране регистрации получите данные для входа и сравните их со значениями, сохраненными в общих настройках. или hard-code like username - admin, а password - admin. оба значения верны только для ввода заставки, иначе переадресуйте на другую страницу, что угодно.

+0

Привет! У меня все еще есть проблемы с этим ... Я добавил код, предложенный выше, но он все еще не работает. (Любые предложения?) JAVA: https://docs.google.com/document/d/1NHYEnkOjApa9RtTVCF6AJvmry6nFjZivNA0nnQ1oifQ/edit?usp=sharing – NoobNinja

+0

Это далеко не лучший способ достижения этой цели, большинство заставок загружать до к экранам входа в систему, поэтому к моменту входа в экран входа в систему это будет поздно. – Jonny2Plates

0

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

первого

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

второй в вашем Android Manifest где вы объявили ваш экран деятельности выплеска

добавить эту

android:noHistory=true 
+0

Я думаю, что у меня есть совсем другое понимание того, что на самом деле спрашивал оригинальный плакат. –

+0

Я пробовал это (это казалось простым и понятным), но это не работает. Он по-прежнему загружается так же, как и раньше. ANDROID МАНИФЕСТ: http://copytaste.com/t2752 ЗАСТАВКА JAVA (ш ваши предложенные изменения) http://copytaste.com/w2752 – NoobNinja

+0

Любые предложения? (Я действительно не уверен, как я буду использовать другие предлагаемые методы. Я довольно новичок в разработке Android) – NoobNinja

1

You необходимо сохранить флаг в общих предпочтениях, подобных этому

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 
} 
+0

Добавить это код – Rohit

+0

Я добавил код только после того, как мой «общественного class SplashScreen extends Activity {" , но я получаю сообщение об ошибке« предпочтения не могут быть решены » ... любые предложения? :) – NoobNinja

+0

Это также принудительное закрытие ... (я включил свой LOGCAT и обновил java с опубликованным выше фрагментом SharedPreferences) http://copytaste.com/b2753 – NoobNinja