Autore Topic: Salvataggio dello stato tra più Activity (aka variabili globali in Android)  (Letto 7204 volte)

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Una variabile statica, come ad esempio un singleton, è un metodo comunemente utilizzato per raggiungere questo scopo in Java.
È tuttavia possibile farlo anche in un modo più elegante, diciamo alla maniera Android: associare lo stato con l'Application context.

Per far questo si dovrà creare una nuova classe che estende Application:

Codice (Java): [Seleziona]
public class MyApplication extends Application {
        private String myState;

        public String getState(){
                return myState;
        }
        public void setState(String s){
                myState = s;
        }
}

Dichiarare nel Manifest la classe appena implementata:
Codice (XML): [Seleziona]
        <application
                android:name="MyApplication"
                android:icon="@drawable/icon"
                android:label="@string/app_name">

Ed infine accedervi utilizzando il context:
Codice (Java): [Seleziona]
                MyApplication application;
               
                // Dentro una Activity
                application = (MyApplication) this.getApplication();
               
                // Fuori da una Activity
                application = (MyApplication) mContext.getApplicationContext();
               
                String myState = application.getState();
               
                application.setState(myState);

(fonte)
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Salvataggio dello stato tra più Activity (aka variabili globali in Android)
« Risposta #1 il: 12 Settembre 2010, 11:36:13 CEST »
0
Bello :D

Mi ero sempre chiesto se ci fosse un modo elegante di condividere dati tra più activity.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Salvataggio dello stato tra più Activity (aka variabili globali in Android)
« Risposta #2 il: 13 Settembre 2010, 13:27:40 CEST »
0
In allegato c'è un esempio completo ;)
« Ultima modifica: 01 Novembre 2010, 13:50:49 CET da Ricky` »

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Salvataggio dello stato tra più Activity (aka variabili globali in Android)
« Risposta #3 il: 13 Settembre 2010, 13:29:44 CEST »
0
In questi casi conviene subito fare uno snippet, tanto il codice l'hai già scritto ;)
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:Salvataggio dello stato tra più Activity (aka variabili globali in Android)
« Risposta #4 il: 23 Febbraio 2011, 17:39:24 CET »
0
Salve ragazzi! ho usato questo modo di agire, in una mia applicazione, ma mi dà errore di ClassCastException prorpio sul cast (MyApplication).... devo mettere qualcosa nel manifest, in particolare? Quell'inserimento nel manifest citato, dovrei vodrei metterlo, dopo <application> già esistente nel mio manifest o dentro <application>? ho visto la struttura xml del manifest android  e non cita il caso in cui ci sono più application.
Grazie in anticipo

Offline Darbon

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
Re:Salvataggio dello stato tra più Activity (aka variabili globali in Android)
« Risposta #5 il: 28 Marzo 2011, 15:51:26 CEST »
0
Scusate ho lo stesso problema, l'applicazione lancia un ClassCastException

Codice (XML): [Seleziona]
<application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name="MyApplication" android:label="@string/app_name"/>  
        <activity android:name="S1" android:label="@string/app_name">      
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
</application>

Cosa dovrei cambiare? Grazie

Offline Darbon

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
Re:Salvataggio dello stato tra più Activity (aka variabili globali in Android)
« Risposta #6 il: 28 Marzo 2011, 19:26:35 CEST »
0
 :-P in effetti sono un idiota basta copiare android:name="MyApplication" nel tag application

Offline sgaglio88

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows vista
Re:Salvataggio dello stato tra più Activity (aka variabili globali in Android)
« Risposta #7 il: 05 Dicembre 2011, 11:21:07 CET »
0
grazie ragazzi ho trovato questo metodo molto utile...io lo voglio utilizzare per salvare quello che faccio in un'applicazione in modo che ogni volta che entro non mi riavvia tutto da capo!! ho pensato di utilizzare questo approccio che poi è lo stesso della fonte postata da JD:
Codice (Java): [Seleziona]
class MyApp extends Application {

  private String myState;

  public String getState(){
    return myState;
  }
  public void setState(String s){
    myState = s;
  }
}

class prova extends Activity {

  @Override
  public void onCreate(Bundle b){
    ...
    MyApp appState = ((MyApp)getApplicationContext());
    String state = appState.getState();

non so però come devo utilizzare quella variabile state...qualcosa mi sfugge forse...se potreste aiutarmi ve ne sarei grato!!:D

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Salvataggio dello stato tra più Activity (aka variabili globali in Android)
« Risposta #8 il: 07 Dicembre 2011, 09:09:21 CET »
0
grazie ragazzi ho trovato questo metodo molto utile...io lo voglio utilizzare per salvare quello che faccio in un'applicazione in modo che ogni volta che entro non mi riavvia tutto da capo!!

Per questo scopo ci sono le SharedPrefereces (che sono persistenti anche al riavvio del dispositivo) o database se i dati sonop molti.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store