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

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

Δημοσ.

Γεια σας,

Έχω μία απορία σχετική με προγραμματισμό σε 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...

 

Ευχαριστώ για το χρόνο σας.

Δημοσ.

Εεε, αφου ειναι public static,μεσα απ τον κωδικα της Act2 κανεις:

>
Act1.counter = 123;

 

 

Σου λειπουν βασικες γνωσεις απο Java (και γενικοτερα απο oop)

 

Δημοσ.

Εεε, αφου ειναι public static,μεσα απ τον κωδικα της Act2 κανεις:

>
Act1.counter = 123;

 

 

Σου λειπουν βασικες γνωσεις απο Java (και γενικοτερα απο oop)

 

 

και αν δεν ήταν public static?

Δημοσ.

Γενικά μπορείς να κάνεις διάφορα πράγματα.

 

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 μπορείς να χρησιμοποιήσεις ένα εξωτερικό αρχείο

Δημοσ.

Γενικά μπορείς να κάνεις διάφορα πράγματα.

 

1) Μπορείς να περνάς σαν intent extra την τιμή από Intent σε intent και σε κάθε onCreate να διαβάζεις την τιμή της μεταβλητής.

 

Στο παραπάνω παράδειγμα το κάθε activity τερματίζεται κάθε φορά που θα καλέσεις την goToActx(x).

Μπορείς να το αποφύγεις αλλά θα πρέπει να διαβάσεις αρκετά το android activity lifecycle

http://developer.and...p/Activity.html

 

2 μπορείς να χρησιμοποιήσεις shared preferences

 

3 μπορείς να χρησιμοποιήσεις ένα εξωτερικό αρχείο

  1. 20 γραμμες κωδικα οι οποιοες κανουν αυτο που θα εκανε μια public static μεταβλητη ή μεθοδος
  2. κι αυτο καμια 20αρια γραμμες θελει...
  3. περισσοτερες γραμμες + premissions για files + πολυ πιο αργο!

Δημοσ.

Δεν θα συμμετέχω σε διαγωνισμό γνώσης και καταμέτρησης γραμμών κωδικα.

 

Αν φανεί χρήσιμος ο κώδικας στον pbp ας τον χρησιμοποιήσει.

 

I'm out of here...

Δημοσ.

+1 για shared preferences!

 

εγω αυτο ειχα κανει για να κραταω boolean τιμες, ακομα και μετα απο restart της εφαρμογης...

αμεσο κ γρηγορο

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

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

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

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

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

Σύνδεση

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

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