2017-10-16 2 views
-4

Wie kann ich einen AltertDialog nach 3 Starts einmal anzeigen? ich nur wissen, wie etwas beim ersten Start der App zu tun (ich bin ein Anfänger mit Android und Sharedpreferences):AlertDialog einmal anzeigen, nachdem die App 3 Mal gestartet wurde

if (settings.getBoolean("my_first_time", true)) { 
    Log.d("Comments", "First time"); 

    // Action which is done at first launch 
    // save first launch 
    settings.edit().putBoolean("my_first_time", false).commit(); 
} else { 
    //not first time   
} 

Dankt, Felix

+2

Was hast du bisher ausprobiert felix? –

+0

Ich bin ein Anfänger, also habe ich nur einmal mit geteilten Präferenzen in einer ersten Aufgabe gearbeitet. – Seilbahn

+0

jedes Mal, wenn es angezeigt wird, erhöhen und speichern in sharedpref und lesen Sie vor der Anzeige – nomag

Antwort

1

Sie können dies tun, indem Sie sharedPreferences um 1 aktualisieren und prüfen, ob es gleich 3 ist, wenn es dann alertDialog anzeigen soll.

Hier ist ein grobes Beispiel.

In Ihrer onCreate Methode fügen Sie dies hinzu.

int appLaunchedFor = getSharedPreferences("app_info", MODE_PRIVATE).getInt("counter", 0); 
if(appLaunchedFor == 3){ 
    //Launch AlertDialog; 

    //Now increament by 1 so that alertDialog will not launch again. 
    getSharedPreferences("app_info", MODE_PRIVATE).edit().putInt("counter", ++appLaunchedFor).commit(); 
}else if (appLaunchedFor < 3){ 
    getSharedPreferences("app_info", MODE_PRIVATE).edit().putInt("counter", ++appLaunchedFor).commit(); 
} 
+0

Ich bekomme einen Fehler für den Operator == in Zeile 3 und für (String, int) in SharedPreferences kann nicht angewendet werden (String) in Zeile 1 – Seilbahn

+0

oh! Ändern Sie in der ersten Zeile "String" in "int". –

+0

Aber jetzt kann der Int nicht auf String angewendet werden, und in Zeile 2 kann Ihr Operator nicht angewendet werden.Danke für Ihre Hilfe! – Seilbahn

0

Der einfachste Weg, dies zu tun, indem SharedPreferences Verwendung ist weil es einfach ist und du in den Kommentaren gesagt hast, dass du es schon benutzt hast.

Sie können dies tun, indem Sie die Application Klasse unterklassifizieren, einen Zähler innerhalb von MyApplication#onCreate() inkrementieren und ihn im SharedPreferences speichern.

Hinweis: Dies ist nicht 100% sicher. Wenn der Nutzer die Daten der App löscht, geht Ihr Zähler verloren. Um dies zu verhindern, können Sie private Datenbanken wie SQLite und Realm verwenden.

+0

"wenn der Benutzer die Daten der App löscht ", werden alle Arten von Daten verloren gehen, mit Ausnahme derer, die in [Externer Speicher] gespeichert wurden (https://developer.android.com/guide/topics/data/data-storage.html#filesExternal). Da "private Datenbanken" nicht auf einem externen Speicher (der nicht privat ist) gespeichert werden können, werden sie ebenfalls gelöscht. – 0X0nosugar

+0

@ 0X0nosugar gut, das ist nicht ganz richtig. Sowohl SQLite als auch Realm ** können im externen Speicher gespeichert werden ([SQLite-Quelle] [1], [Realm-Quelle] [2]). In diesem Fall benötigt er die Berechtigungen READ_EXTERNAL_STORAGE und WRITE_EXTERNAL_STORAGE. [1]: https://stackoverflow.com/questions/14373863/how-to-store-sqlite-database-directly-on-sdcard [2]: https://stackoverflow.com/questions/29551664/ how-to-move-my-realm-Datei-in-SD-Karte –

+0

Vielen Dank für Ihre Antwort, aber ich weiß nicht, wie ich es in geteilten Präferenzen speichern sollte. Ich bin ein Anfänger in Android – Seilbahn

Verwandte Themen