Autore Topic: AsyncTask: errore nella condivisione dei dati con Applicatione  (Letto 750 volte)

Offline Agosteeno

  • Utente normale
  • ***
  • Post: 152
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson - Xperia Neo
  • Sistema operativo:
    Ubuntu 11.04
AsyncTask: errore nella condivisione dei dati con Applicatione
« il: 13 Maggio 2011, 15:47:41 CEST »
0
Ho spostato la discussione in questo nuovo topic perche' nell'altro eravamo finito off-topic. Si diceva, voglio condividere delle stringhe tra tutte le activity (tra cui appunto delle stringhe. Come fatto in questo tutorial Salvataggio dello stato tra più Activity (aka variabili globali in Android) - Android Developers Italia . In questo caso particolare si tratta di un AsyncTask. Queste stringhe mi servono per il nome dell'url di un server e alcuni nomi di file.

Il codice del task e' questo:
Codice (Java): [Seleziona]
public class mioTask extends
                AsyncTask<Context, String, String> {

                @Override
                protected String doInBackground(Context... ctx) {
                        // TODO Auto-generated method stub
                        Context c = ctx[0];
                        DatiCondivisiApplication datiCondivisiApp;
                       
                        datiCondivisiApp = (DatiCondivisiApplication) c.getApplicationContext();
                        ...

il codice dell'application invece e' questo:
Codice (Java): [Seleziona]
public class DatiCondivisiApplication extends Application {

        private static final String urlServer = "[url]http://url_del_server";

        private static final String stringa1 = "valore1";
        private static final String stringa2 = "valore2";


        public String getUrlServer() {
                return urlServer;
        }
...

L'applicazione crasha nella riga
Codice (Java): [Seleziona]
datiCondivisiApp = (DatiCondivisiApplication) c.getApplicationContext();e il logcat dice questo:
05-12 08:43:15.842: ERROR/AndroidRuntime(217): Uncaught handler: thread AsyncTask #1 exiting due to uncaught exception
05-12 08:43:15.982: ERROR/AndroidRuntime(217): java.lang.RuntimeException: An error occured while executing doInBackground()
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     at android.os.AsyncTask$3.done(AsyncTask.java:200)
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     at java.lang.Thread.run(Thread.java:1096)
05-12 08:43:15.982: ERROR/AndroidRuntime(217): Caused by: java.lang.ClassCastException: android.app.Application
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     at mioPackage.mioTask.doInBackground(mioTask.java:40)
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     at mioPackage.mioTask.doInBackground(mioTask.java:1)
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-12 08:43:15.982: ERROR/AndroidRuntime(217):     ... 4 more


Naturalmente la riga sul manifest e' stata aggiunta:
Codice (XML): [Seleziona]
 <application android:name="DatiCondivisiApplication"
               android:icon="@drawable/icon"
               android:label="@string/app_name">
    </application>

Non ho idea di quale sia il problema...
« Ultima modifica: 13 Maggio 2011, 15:51:49 CEST da Agosteeno »
Risparmia l'acqua, bevi birra...

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:AsyncTask: errore nella condivisione dei dati con Applicatione
« Risposta #1 il: 13 Maggio 2011, 15:59:35 CEST »
0
Naturalmente la riga sul manifest e' stata aggiunta:
Codice (XML): [Seleziona]
 <application android:name="DatiCondivisiApplication"
               android:icon="@drawable/icon"
               android:label="@string/app_name">
    </application>

Non ho idea di quale sia il problema...

prova cosi:
Codice (XML): [Seleziona]
 <application android:name=".DatiCondivisiApplication"
               android:icon="@drawable/icon"
               android:label="@string/app_name">
    </application>
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:AsyncTask: errore nella condivisione dei dati con Applicatione
« Risposta #2 il: 13 Maggio 2011, 16:05:42 CEST »
0
Ho spostato la discussione in questo nuovo topic perche' nell'altro eravamo finito off-topic.

Prossima volta contatta un moderatore che si occuperà lui di chiudere e ridirigere la discussione su un nuovo post o giudicare se un topic è finito o meno off-topic.

La risposta al tuo quesito ti è già stata data nell'altro topic che non è affatto finito off-topic, anzi è perfettamente in linea e attende soltanto una tua risposta (o meglio, un tuo studio nel capire cosa è e cosa significa ClassCastException).

Quindi chiudo questo topic poiché doppio ed invito tutti a continuare la discussione nel topic originale: AsyncTask: passare 2 tipi di dato diversi - Android Developers Italia

Per ulteriori delucidazioni utilizzare i PM o contattare l'amministratore del forum.

*** TOPIC CHIUSO ***