2017-10-16 32 views
-4

Comment puis-je afficher un AltertDialog après 3 lancements une fois? Je ne sais comment faire quelque chose au premier démarrage de l'application (je suis un débutant avec Android et Sharedpreferences):Afficher AlertDialog une fois après le lancement de l'application 3 fois

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   
} 

remercient, Felix

+2

Qu'est-ce que vous avez essayé jusqu'ici felix? –

+0

Je suis débutant, donc je n'ai travaillé qu'une fois avec des préférences partagées dans une première tâche. – Seilbahn

+0

chaque fois qu'il est affiché, incrémenter et enregistrer dans sharedpref et lire avant de montrer – nomag

Répondre

1

Vous pouvez le faire en mettant à jour sharedPreferences par 1 et vérifiez s'il est égal à 3, si c'est alors show alertDialog.

Voici un exemple approximatif. Dans votre onCreate, ajoutez ceci.

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

Je reçois une erreur pour l'opérateur == dans la ligne 3 et pour (String, int) dans SharedPreferences ne peut pas être appliqué à (chaîne) dans la ligne 1 – Seilbahn

+0

oh! changez 'String' en' int' en première ligne. –

+0

Mais maintenant, l'int ne peut pas être appliqué à une chaîne, et à la ligne 2 votre opérateur ne peut pas être appliqué.Merci de votre aide! – Seilbahn

0

La façon de faire est plus simple en utilisant SharedPreferences , puisque c'est simple et que vous avez dit dans les commentaires que vous l'avez déjà utilisé.

Vous pouvez le faire en sous-classant la classe Application, en incrémentant un compteur à l'intérieur de MyApplication#onCreate() et en l'enregistrant dans le SharedPreferences.

Note: Ceci n'est pas certain à 100%. Si l'utilisateur efface les données de l'application, votre compteur sera perdu. Pour éviter cela, vous pouvez utiliser des bases de données privées telles que SQLite et Realm.

+0

"si l'utilisateur efface les données de l'application ", toutes les données seront perdues sauf celles qui ont été enregistrées dans [stockage externe] (https://developer.android.com/guide/topics/data/data-storage.html#filesExternal). Comme les "bases de données privées" ne peuvent pas être sauvegardées sur un stockage externe (qui n'est pas privé), elles seraient également effacées. – 0X0nosugar

+0

@ 0X0nosugar bien, ce n'est pas tout à fait correct. Les deux SQLite et Realm ** peuvent ** être sauvegardés dans un stockage externe ([Source SQLite] [1], [Source du royaume] [2]). Dans ce cas, il aurait besoin des autorisations READ_EXTERNAL_STORAGE et 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-file-in-sd-card –

+0

Merci pour votre réponse, mais je ne sais pas comment je devrais l'enregistrer dans les préférences partagées. Je suis un débutant dans Android – Seilbahn