Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Για κάποιο περίεργο λόγο ενώ έχω στις shared preferences το getInt και το putInt κάποιες μεταβλητές που πρόσθετα επιπλέον δεν τις αποθηκεύει.

 

Προσπαθώ να κάνω παιχνίδι που να μπορεί ο χαρακτήρας να ανεβαίνει επίπεδα.
Και έχω κάποιες μεταβλητές.

Αποθηκεύει όλες τι μεταβλητές τις παλιές και αυτές που πρόσθεσα ΄σημερα τίπτα.

@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
SharedPreferences settings = getSharedPreferences("MYPREFS", 0);
SharedPreferences.Editor editor = settings.edit();
editor.clear();
editor.putInt("levels",level);
editor.putInt("levelmultipliers",levelmultiplier);
editor.putLong("xps",xp);
editor.putLong("lvlupxps",lvlupxp);
editor.commit();


@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
SharedPreferences settings = getSharedPreferences("MYPREFS", 0);
level=settings.getInt("levels",1);
levelmultiplier = settings.getInt("levelmultipliers",5000);
xp = settings.getLong("xps",0);
lvlupxp = settings.getLong("lvlupxps",0);

Είναι δηλωμένες και στο activity σαν int klp klp.
Τι έχω λάθος έχω σκάσει. 

Δημοσ.

Μήπως φταίει το editor.clear(); ;

 

Όχι γιατί καθαρίζει και τα ξαναπερνάει τα καινούρια.

Το περίεργο έιναι ότι πλέον crashάρουν και άλλες μετά από ένα 2ο run.

 

Δεν μπορ΄ψ να κάνω πρόσθεση long με int αν κάνω cast το int->long?

Δηλαδή.

A+= (long) B;

Δημοσ.

Ξέρω τί κάνει η clear αλλά εφ όσον δεν βλέπω όλο τον κώδικα, σου λέω να κανείς μια δομική βγάζοντας το. --Εξάλλου αφού γράφεις πάλι από πάνω με νέες τιμές, δεν υπάρχει λόγος να σβήσεις τις παλιές.

Επίσης εσύ λες ότι δεν γίνεται ανάκτηση των αποθηκευμένων τιμών κι όχι ότι crashάρει κάπου.

Τέλος όταν προσθέτεις long με int δε χρειάζεται cast ο int, το αποτέλεσμα είναι long.

 

Μερικές παρατηρήσεις:

Βάλε σε σταθερές (static final ή στο xml) τα key απ τα preferences

Την ανάκτηση των τιμών νομίζω είναι σωστότερα να γίνεται στην onStart (όχι στην on Resume)

Είσαι σίγουρος ότι χρειάζεσαι long; Ξέρεις μέχρι πόσο φτάνει ένας int;

Δημοσ.

Ξέρω τί κάνει η clear αλλά εφ όσον δεν βλέπω όλο τον κώδικα, σου λέω να κανείς μια δομική βγάζοντας το. --Εξάλλου αφού γράφεις πάλι από πάνω με νέες τιμές, δεν υπάρχει λόγος να σβήσεις τις παλιές.

Επίσης εσύ λες ότι δεν γίνεται ανάκτηση των αποθηκευμένων τιμών κι όχι ότι crashάρει κάπου.

Τέλος όταν προσθέτεις long με int δε χρειάζεται cast ο int, το αποτέλεσμα είναι long.

 

Μερικές παρατηρήσεις:

Βάλε σε σταθερές (static final ή στο xml) τα key απ τα preferences

Την ανάκτηση των τιμών νομίζω είναι σωστότερα να γίνεται στην onStart (όχι στην on Resume)

Είσαι σίγουρος ότι χρειάζεσαι long; Ξέρεις μέχρι πόσο φτάνει ένας int;

 

Το βρήκα το λάθος πρέπει να έιχε γίνει λόγω copy paste από το note επειδή όταν το έγραψα ξανά απλά δούλεψε.

Χρειάζομαι το lvlup και το xp να πηγαίνουν περίπου στα 13/14 ψηφία οπότε το int σε πετάει σε αρνητικό γι αυτό ήθελα long.

Με το on resume δούλεψε εντάξει μια χαρά.

Αν βάλω ας πούμε σε ένα class όλα τα shared preferences μπορώ απλά να καλώ το class και σε άλλα activities όπως κάνεις με απλά classes? Μήπως ξέρεις;

Δηλαδή να γράφω

 

Public Void Save()

{

shared klp klp.

}

 

και σε άλλο activity να το κάνω call και να δουλεύει.

 

Ξέρω πως να καλώ classes από διαφορετικα activities απλά δεν ξέρω αν γίνεται για τα shared preferences.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...