Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [Android] Source Not Found con getAssets()

    Ciao a tutti. Vorrei deserializzare un .txt che ho messo nella cartella assets.
    Per richiamare tale file faccio così:
    codice:
            
            InputStream is = null;        
            try {
                is = context.getAssets().open("Comuni.txt");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    dove context viene dichiarato prima del metodo onCreate così:
    codice:
    Context context= this;
    Quando avvio l'app ottenevo l'avviso source not found e mi si blocca l'app. Mettendo un breakpoint nella riga in cui chiamo il metodo getAssets ottengo questi avvisi:


    Come risolvo? Non so proprio come fare. Ho bisogno del vostro aiuto

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Ehm... oltre al fatto che non ha nessun senso dichiarare una variabile di tipo Context ed assegnargli "this" (non è sbagliato, è solo inutile... dove ti serve un Context dentro a quell'Activity usa semplicemente "this")... dovresti postare lo stackTrace che trovi nel LogCat.

    Quello stack di thread del debug non dice nulla del problema riscontrato.


    Dimenticavo... Verifica anche che la directory "assets" sia nella root del progetto.


    Ciao.
    Ultima modifica di LeleFT; 30-06-2014 a 13:09
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Sul context avevo i miei dubbi, farò come suggerisci.
    Per quanto riguarda il resto mi devi dare una mano perché sono nuovo alla programmazione java.
    Esattamente come trovo lo stackTrace nel LogCat?
    Inoltre come si verifica che assets sia nella root? Io la vedo tra le cartelle del progetto

  4. #4
    dovrei essere riuscito a estrapolare lo stackTrace di LogCat. E' questo?
    http://pastebin.com/eRdmeGF4

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Immagino che tu stia usando Eclipse per programmare. Se così è, il LogCat lo trovi nella parte bassa:

    LogCat.jpg


    Selezionando la scheda che ho evidenziato, vedi una tabella nella parte bassa (con le colonne "Level", "Time", "PID", ecc). Lì vengono visualizzati tutti i messaggi di log. Ed è lì che vengono evidenziate le eccezioni (con tutto lo stackTrace).

    Il mio consiglio è quello di testare la App su un emulatore (dispositivo virtuale) e non direttamente sul dispositivo, almeno finchè non hai fatto tutto il debug: in questo modo non avrai tra i piedi tutti i messaggi di log dell'intero sistema del tuo dispositivo (che ce ne sono decine e decine ogni secondo e diventa assurdamente arduo trovare i problemi). Quello che hai postato sembrerebbe un logcat parziale di un dispositivo fisico. Dico che è parziale perchè lì non è evidenziata alcuna eccezione.

    Per creare un dispositivo virtuale, hai a disposizione l'iconcina "Android Virtual Device Manager" nella barra degli strumenti in alto:

    AVD.png

    Crei il tuo dispositivo virtuale e vai in debug su quello.


    Che la cartella "assets" sia tra l'elenco delle cartelle del tuo progetto è ovvio... altrimenti non ce l'avresti, no? La "root" del progetto è la cartella del progetto stesso... quindi, se la cartella "assets" è nella root significa che non è una sotto-cartella di qualcos'altro, ma che è al primo livello (cioè allo stesso livello delle cartelle "res", "bin", ecc).


    Ciao.
    Ultima modifica di LeleFT; 01-07-2014 a 10:11
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Allora, la cartella assets è esattamente allo stesso livello di res, bin, src e compagnia bella.
    Questo è il logCat ottenuto utilizzando l'emulatore: http://pastebin.com/9Y7eGWxG

    nella riga 336:
    07-03 05:30:43.330: I/ActivityManager(936): Process com.example.codicefiscaleandroid (pid 1591) has died.

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    No, il problema è evidenziato prima:


    codice:
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.codicefiscaleandroid/com.example.codicefiscaleandroid.Main}: java.lang.NullPointerException
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
         at android.app.ActivityThread.access$800(ActivityThread.java:135)
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
         at android.os.Handler.dispatchMessage(Handler.java:102)
         at android.os.Looper.loop(Looper.java:136)
         at android.app.ActivityThread.main(ActivityThread.java:5017)
         at java.lang.reflect.Method.invokeNative(Native Method)
         at java.lang.reflect.Method.invoke(Method.java:515)
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
         at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
         at com.example.codicefiscaleandroid.Main.onCreate(Main.java:111)
         at android.app.Activity.performCreate(Activity.java:5231)
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
         ... 11 more

    Che significa che, alla riga 111 di Main.java stai usando un oggetto che è nullo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    A cosa è dovuta questa NullPointerException? Perché il .txt nella cartella assets è presente

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Quella NullPointerException viene sollevata dall'istruzione alla riga 111 del file Main.java... che c'è a quella riga?
    Si può vedere tutto il sorgente Main.java?

    Tra l'altro... nel LogCat che hai postato si vede che prima dell'eccezione che ho riportato ce ne sono delle altre... potrebbe dipendere anche da quello, ma non avendo niente in mano da poter controllare, è impossibile riuscire a dire di più.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    Perfetto ho risolto. Avevo sbagliato la fase di aggiunta di elementi dell'arrayList, invece di mettere lista.add(l) avevo fatto un casino.
    Inoltre inizializzavo a null la lista in fase di dichiarazione invece di fare new ArrayList<type>();

    ora tutto è risolto.
    Grazie mille, mi hai salvato
    Ultima modifica di microprocessore; 04-07-2014 a 16:19

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.