pbp Δημοσ. 27 Νοεμβρίου 2012 Δημοσ. 27 Νοεμβρίου 2012 Γεια σας, Έχω μία απορία σχετική με προγραμματισμό σε android εφαρμογές. Έστω ότι έχω μία κλάση Act1 (main - από εδώ ξεκινάει η εφαρμογή) και μια κλάση Act2 και έστω ότι στην κλάση Act1 έχω μία public static int μεταβλητή την οποία και αρχικοποιώ με την τιμή 0. Η απορία μου είναι το πώς μπορώ να έχω άμεση πρόσβαση σε αυτή τη μεταβλητή ώστε να μεταβάλλω την τιμή της μέσω της κλάσης Act2 (Υποθέτουμε ότι με κάποιο κουμπί κάποια στιγμή μεταπηδάμε στην κλάση Act2 από την Act1 μέσω κάποιου Intent) και όταν κάποια στιγμή επιστρέψω πίσω στην Act1 η τιμή της μεταβλητής να έχει αλλάξει; Δεν εννοώ να έκανα πχ αυτο: > Intent i = new Intent(this,Act2.class); i.putExtra("counter",counter); //counter είναι η προαναφερθείσα μεταβλητή startActivity(i); εδώ είναι φυσικό να μη μεταβληθεί η τιμή της counter... Ευχαριστώ για το χρόνο σας.
nilosgr Δημοσ. 27 Νοεμβρίου 2012 Δημοσ. 27 Νοεμβρίου 2012 Εεε, αφου ειναι public static,μεσα απ τον κωδικα της Act2 κανεις: > Act1.counter = 123; Σου λειπουν βασικες γνωσεις απο Java (και γενικοτερα απο oop)
pbp Δημοσ. 27 Νοεμβρίου 2012 Μέλος Δημοσ. 27 Νοεμβρίου 2012 Εεε, αφου ειναι public static,μεσα απ τον κωδικα της Act2 κανεις: > Act1.counter = 123; Σου λειπουν βασικες γνωσεις απο Java (και γενικοτερα απο oop) και αν δεν ήταν public static?
nilosgr Δημοσ. 27 Νοεμβρίου 2012 Δημοσ. 27 Νοεμβρίου 2012 (επεξεργασμένο) Σε τι διαφέρουν τα public / protected / private; Τι κανει το static; Επεξ/σία 28 Νοεμβρίου 2012 από nilosgr
warlock9_0 Δημοσ. 28 Νοεμβρίου 2012 Δημοσ. 28 Νοεμβρίου 2012 νομίζω στο δεύτερο link ήθελες να βάλεις αυτό http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html
dj_neo Δημοσ. 2 Δεκεμβρίου 2012 Δημοσ. 2 Δεκεμβρίου 2012 Γενικά μπορείς να κάνεις διάφορα πράγματα. 1) Μπορείς να περνάς σαν intent extra την τιμή από Intent σε intent και σε κάθε onCreate να διαβάζεις την τιμή της μεταβλητής. > class Act1 extends Activity{ private int counter = 0; public void onCreate(Bundle SavedInstanceState){ ... ... ... if (this.getIntent().hasExtra("counter") counter = this.getIntent().getIntExtra("counter", 0); ... ... ... } private void goToAct2(){ Intent toAct2 = new Intent(this, Act2.class); toAct2.putExtra("counter", counter); startActivity(toAct2); finish(); } } class Act2 extends Activity{ private int counter = 0; public void onCreate(Bundle SavedInstanceState){ .... .... .... if (this.getIntent().hasExtra("counter") counter = this.getIntent().getIntExtra("counter", 0); ... ... ... } private void goToAct1(){ Intent toAct1 = new Intent(this, Act1.class); toAct1.putExtra("counter", counter); startActivity(toAct1); finish(); } } Στο παραπάνω παράδειγμα το κάθε activity τερματίζεται κάθε φορά που θα καλέσεις την goToActx(x). Μπορείς να το αποφύγεις αλλά θα πρέπει να διαβάσεις αρκετά το android activity lifecycle http://developer.android.com/reference/android/app/Activity.html 2 μπορείς να χρησιμοποιήσεις shared preferences 3 μπορείς να χρησιμοποιήσεις ένα εξωτερικό αρχείο
nilosgr Δημοσ. 2 Δεκεμβρίου 2012 Δημοσ. 2 Δεκεμβρίου 2012 Γενικά μπορείς να κάνεις διάφορα πράγματα. 1) Μπορείς να περνάς σαν intent extra την τιμή από Intent σε intent και σε κάθε onCreate να διαβάζεις την τιμή της μεταβλητής. Στο παραπάνω παράδειγμα το κάθε activity τερματίζεται κάθε φορά που θα καλέσεις την goToActx(x). Μπορείς να το αποφύγεις αλλά θα πρέπει να διαβάσεις αρκετά το android activity lifecycle http://developer.and...p/Activity.html 2 μπορείς να χρησιμοποιήσεις shared preferences 3 μπορείς να χρησιμοποιήσεις ένα εξωτερικό αρχείο 20 γραμμες κωδικα οι οποιοες κανουν αυτο που θα εκανε μια public static μεταβλητη ή μεθοδος κι αυτο καμια 20αρια γραμμες θελει... περισσοτερες γραμμες + premissions για files + πολυ πιο αργο!
dj_neo Δημοσ. 2 Δεκεμβρίου 2012 Δημοσ. 2 Δεκεμβρίου 2012 Δεν θα συμμετέχω σε διαγωνισμό γνώσης και καταμέτρησης γραμμών κωδικα. Αν φανεί χρήσιμος ο κώδικας στον pbp ας τον χρησιμοποιήσει. I'm out of here...
g8anos Δημοσ. 3 Δεκεμβρίου 2012 Δημοσ. 3 Δεκεμβρίου 2012 +1 για shared preferences! εγω αυτο ειχα κανει για να κραταω boolean τιμες, ακομα και μετα απο restart της εφαρμογης... αμεσο κ γρηγορο
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα