2016-11-16 2 views
-2

ich auf android bin neu, ich habe drei Aktivitäten:Wie man Splash, Login und Hauptaktivität auf Android verwaltet?

  • SplashActivity
  • LoginActivity
  • MainActivity

I Benutzer LoginActivity für erste Mal navigieren müssen dann funktioniert das Authentifizieren und Geh zu MainActivity aber für das nächste Mal, die bereits authentifiziert wurde, muss ich den Benutzer SplashActivity navigieren und dann MainActivity.

ist es gute Praxis, wenn ich die Splash-Aktivität und setzte Anmeldung Aktivität als luncher entfernen, aber verstecken alle Kontrollen als Splash Aktivität und zeigt Steuerelemente anzuzeigen es als Anmeldeaktivität angezeigt werden?

dank

+0

Verwendung gemeinsame Vorliebe – sasikumar

+0

siehe http://stackoverflow.com/questions/23024831/android-shared-preferences-example – sasikumar

+0

@ Sasikumar: Die Frage ist, wie das Startprogramm zu handhaben nicht, wie zu navigieren. – Sina

Antwort

0

Sie müssen lokal Benutzeraktionen speichern und Ihre App Verhalten basierend auf früheren Aktionen Ihrer Benutzer zu verwalten. Zum Speichern von Daten lokal auf Benutzergerät, können Sie entweder SharedPreferences oder Database nach Ihren Bedürfnissen nutzen. Für die Verwendung dieser würde ich vorschlagen, dass Sie einige Tutorials im Web lesen. Base auf Ihre Bedürfnisse Ich schlage vor, Sie SharedPreferences zu verwenden.

-1
my pscudo code:--- Once you do first time login please same userID and password 
and next time you have to check it wheather all user id and password exit or not . In this way you can resolve it. 

Save:-- 

SharedPreferences.Editor sqliteEditor= getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit(); 
sqliteEditor.putString("userID", "chay7an"); 
sqliteEditor.putInt("Password", sadasdas); 
sqliteEditor.commit(); 

Retrive :-- 

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
String restoredText = prefs.getString("text", null); 
if (restoredText != null) { 
String name = prefs.getString("userID", ""); 
int idName = prefs.getInt("Password", 0); 

}

+0

Downvoted für dumme Idee, Benutzerpasswort auf einem Gerät zu speichern. –

+0

@Marcin yeah Ich stimme zu, aber zum Beispiel habe ich gesagt. immer sollten Sie Ihre Bewerbungssitzung pflegen. –

0

In Ihrem SplashScreen überprüfen, ob Benutzer bereits mit authentifiziert einen flag in SharedPreferences

Verwenden Sie ein Worker-Thread eine gewisse Verzögerung bei Splash-Screen in onCreate() von Splashscreen

onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView("<Layout id>"); 
    Thread navThread = new Thread() { 
       @Override 
       public void run() { 
        try { 
         sleep(5000); 
        } catch (InterruptedException e) { 
         e.printStackTrace(); 
        } 
        navigateToHomeScreen(); 
       } 
      }; 
      navThread.start(); 
    } 

void navigateToHomeScreen(){ 
    SharedPreferences preferences=c.getSharedPreferences("<Your pref name>", Context.MODE_PRIVATE); 
     if(preferences.contains("isAuthenticated")){ 
      // Navigate to Main Activity 
     }else{ 
      // Navigate to login Activity 
     } 
     finish(); 
     } 
, um sicherzustellen,

in Ihrem Login-Aktivität einmal Mitglied ist

authentifiziert
SharedPreferences preferences=c.getSharedPreferences("<Your pref name>", Context.MODE_PRIVATE); 
    preferences.edit().putBoolean("isAuthenticated", true).apply(); 
// Navigate to Main Activity 

Hinweise: Declare PrefName in einigen Constant-Datei und den Zugang gleichen überall SharedPreferences zugreifen möchten.

+0

An alle, die bisher geantwortet: die SharedPreferences Verwendung ist auf jeden Fall erforderlich, aber das Problem ist etwas anderes. Wenn ich SplashActivity mit 0 Verzögerung als Launcher einstelle, wird es jedes Mal auftauchen, wenn ich es zum ersten Mal nicht will. Wenn ich LoginActivity als Launcher einstelle, wird es zum zweiten Mal auftauchen und sofort schließen und zu MainActivity navigieren, was ich auch nicht möchte. – Sina