Autore Topic: Salvataggio dati, problema con il Context  (Letto 520 volte)

Offline rafthefurtiv

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
Salvataggio dati, problema con il Context
« il: 12 Aprile 2013, 10:31:02 CEST »
0
Salve,
non riesco a capire come creare una classe per il salvataggio siccome necessito di un oggetto Context che non so da dove prendere!
Qualcuno potrebbe aiutarmi a capire come ottenerlo? In modo che possa passarlo come parametro al metodo della classe voluta.
Grazie in anticipo.

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 dati, problema con il Context
« Risposta #1 il: 12 Aprile 2013, 13:36:02 CEST »
0
La risposta dipende da qual'è nel dettaglio il tuo problema.

Una prima risposta generica è che il Context lo prendi dall'activity.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline rafthefurtiv

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
Re:Salvataggio dati, problema con il Context
« Risposta #2 il: 12 Aprile 2013, 14:24:59 CEST »
0
faccio un esempio forse è più chiaro :)
se creo una classe salvataggio ad esempio, e al suo interno creo un metodo che salvi una variabile su un file di testo, allora avrò bisogno di passare a quel metodo l'oggetto Activity(che poi sarebbe un context a quanto ho capito).

Ma come faccio ad avere questa informazione? come faccio da una classe che ho creato io ad ottenere il Context della mia applicazione?

Se l' operazione la effettuo nel MainActivity allora tutto va bene perchè i metodi che uso per il salvataggio sono appunto dell'activity in questione...ma se volessi richiamarli da una classe che ho fatto io?

Spero sia stato chiaro xd

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Salvataggio dati, problema con il Context
« Risposta #3 il: 12 Aprile 2013, 14:32:50 CEST »
0
Nel costruttore della tua classe prevedi che venga passato un context, e te lo metti in una variabile interna alla classe. In questo modo hai il riferimento quando poi ti servirà nell'invocazione dei metodi che ne hanno bisogno.

Offline rafthefurtiv

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
Re:Salvataggio dati, problema con il Context
« Risposta #4 il: 12 Aprile 2013, 14:39:51 CEST »
0
Il problema è che quando creo  la classe e quindi devo impostare il Context nel costruttore...da dove lo prendo se non sono nel MainActivity ma ad esempio in un'altra classe (tipo una che gestisce il render della scena)?

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Salvataggio dati, problema con il Context
« Risposta #5 il: 12 Aprile 2013, 15:03:58 CEST »
0
Il problema è che quando creo  la classe e quindi devo impostare il Context nel costruttore...da dove lo prendo se non sono nel MainActivity ma ad esempio in un'altra classe (tipo una che gestisce il render della scena)?

Se usi metodi che necessitano del Context per funzionare in una catena di classi ad uso "generico" vuol dire che hai un forte accoppiamento tra le classi della tua app. In questo caso sarebbe lecito passare il context di classe in classe attraverso i costruttori; approccio scomodo, inelegante e potenzialmente soggetto a numerose sviste.

In alternativa puoi centralizzare l'accesso ad un context condiviso; estendi la classe Application di android e aggiungi un metodo helper statico che ti restituisca il context d'applicazione

Codice (Java): [Seleziona]
package mio.package;

import android.app.Application;
import android.content.Context;

public class MyApplication extends Application {

    private static Context context;

    public void onCreate(){
        super.onCreate();
        MyApplication.context = getApplicationContext();
    }

    public static Context getAppContext() {
        return MyApplication.context;
    }
}

Indica nel manifest che l'app deve usare la tua implementazione di Application invece che quella standard
Codice (XML): [Seleziona]
<application android:name="mio.package.MyApplication">
  <!-- ... -->
</application>

E dove ti serve un context fai:
Codice (Java): [Seleziona]
Context appContext = MyApplication.getAppContext();
« Ultima modifica: 12 Aprile 2013, 15:07:51 CEST da Sakazaki »

Offline rafthefurtiv

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
Re:Salvataggio dati, problema con il Context
« Risposta #6 il: 12 Aprile 2013, 15:32:29 CEST »
0
Perfetto tutto funzionante. Grazie mille per l'aiuto!
Topic Risolto