Autore Topic: Errore tra una tab e l'altra  (Letto 1378 volte)

Offline SarAndroid

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: +1
    • Mostra profilo
Errore tra una tab e l'altra
« il: 07 Maggio 2012, 18:37:21 CEST »
0
Ciao a tutti.
Ho un'applicazione con una tabgroup che a volte va in crash. Succede alcune volte quando mi sposto da una tab a l'altra, e utilizzando il Dalvik Debug Monitor ricevo questo errore:

Codice: [Seleziona]
05-07 17:32:36.019: D/dalvikvm(455): GC_FOR_MALLOC freed 8448 objects / 403512 bytes in 126ms
05-07 17:32:36.089: D/AndroidRuntime(455): Shutting down VM
05-07 17:32:36.089: W/dalvikvm(455): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
05-07 17:32:36.230: E/TiApplication(455): (main) [226,105054] Sending event: exception on thread: main msg:java.lang.NullPointerException; Titanium 1.8.2,2012/02/23 17:46,59b3a90
05-07 17:32:36.230: E/TiApplication(455): java.lang.NullPointerException
05-07 17:32:36.230: E/TiApplication(455):         at android.view.ViewConfiguration.get(ViewConfiguration.java:211)
05-07 17:32:36.230: E/TiApplication(455):         at android.view.View.<init>(View.java:1814)
05-07 17:32:36.230: E/TiApplication(455):         at android.view.ViewGroup.<init>(ViewGroup.java:280)
05-07 17:32:36.230: E/TiApplication(455):         at android.widget.FrameLayout.<init>(FrameLayout.java:75)
05-07 17:32:36.230: E/TiApplication(455):         at ti.modules.titanium.ui.widget.tableview.TiTableView.<init>(TiTableView.java:247)
05-07 17:32:36.230: E/TiApplication(455):         at ti.modules.titanium.ui.widget.TiUITableView.processProperties(TiUITableView.java:97)
05-07 17:32:36.230: E/TiApplication(455):         at org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641)
05-07 17:32:36.230: E/TiApplication(455):         at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464)
05-07 17:32:36.230: E/TiApplication(455):         at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456)
05-07 17:32:36.230: E/TiApplication(455):         at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434)
05-07 17:32:36.230: E/TiApplication(455):         at ti.modules.titanium.ui.TableViewProxy.getTableView(TableViewProxy.java:129)
05-07 17:32:36.230: E/TiApplication(455):         at ti.modules.titanium.ui.TableViewProxy.handleSetData(TableViewProxy.java:423)
05-07 17:32:36.230: E/TiApplication(455):         at ti.modules.titanium.ui.TableViewProxy.handleMessage(TableViewProxy.java:541)
05-07 17:32:36.230: E/TiApplication(455):         at android.os.Handler.dispatchMessage(Handler.java:95)
05-07 17:32:36.230: E/TiApplication(455):         at android.os.Looper.loop(Looper.java:123)
05-07 17:32:36.230: E/TiApplication(455):         at android.app.ActivityThread.main(ActivityThread.java:4627)
05-07 17:32:36.230: E/TiApplication(455):         at java.lang.reflect.Method.invokeNative(Native Method)
05-07 17:32:36.230: E/TiApplication(455):         at java.lang.reflect.Method.invoke(Method.java:521)
05-07 17:32:36.230: E/TiApplication(455):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-07 17:32:36.230: E/TiApplication(455):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-07 17:32:36.230: E/TiApplication(455):         at dalvik.system.NativeStart.main(Native Method)
05-07 17:32:36.280: E/AndroidRuntime(455): FATAL EXCEPTION: main
05-07 17:32:36.280: E/AndroidRuntime(455): java.lang.NullPointerException
05-07 17:32:36.280: E/AndroidRuntime(455):         at android.view.ViewConfiguration.get(ViewConfiguration.java:211)
05-07 17:32:36.280: E/AndroidRuntime(455):         at android.view.View.<init>(View.java:1814)
05-07 17:32:36.280: E/AndroidRuntime(455):         at android.view.ViewGroup.<init>(ViewGroup.java:280)
05-07 17:32:36.280: E/AndroidRuntime(455):         at android.widget.FrameLayout.<init>(FrameLayout.java:75)
05-07 17:32:36.280: E/AndroidRuntime(455):         at ti.modules.titanium.ui.widget.tableview.TiTableView.<init>(TiTableView.java:247)
05-07 17:32:36.280: E/AndroidRuntime(455):         at ti.modules.titanium.ui.widget.TiUITableView.processProperties(TiUITableView.java:97)
05-07 17:32:36.280: E/AndroidRuntime(455):         at org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641)
05-07 17:32:36.280: E/AndroidRuntime(455):         at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464)
05-07 17:32:36.280: E/AndroidRuntime(455):         at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456)
05-07 17:32:36.280: E/AndroidRuntime(455):         at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434)
05-07 17:32:36.280: E/AndroidRuntime(455):         at ti.modules.titanium.ui.TableViewProxy.getTableView(TableViewProxy.java:129)
05-07 17:32:36.280: E/AndroidRuntime(455):         at ti.modules.titanium.ui.TableViewProxy.handleSetData(TableViewProxy.java:423)
05-07 17:32:36.280: E/AndroidRuntime(455):         at ti.modules.titanium.ui.TableViewProxy.handleMessage(TableViewProxy.java:541)
05-07 17:32:36.280: E/AndroidRuntime(455):         at android.os.Handler.dispatchMessage(Handler.java:95)
05-07 17:32:36.280: E/AndroidRuntime(455):         at android.os.Looper.loop(Looper.java:123)
05-07 17:32:36.280: E/AndroidRuntime(455):         at android.app.ActivityThread.main(ActivityThread.java:4627)
05-07 17:32:36.280: E/AndroidRuntime(455):         at java.lang.reflect.Method.invokeNative(Native Method)
05-07 17:32:36.280: E/AndroidRuntime(455):         at java.lang.reflect.Method.invoke(Method.java:521)
05-07 17:32:36.280: E/AndroidRuntime(455):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-07 17:32:36.280: E/AndroidRuntime(455):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-07 17:32:36.280: E/AndroidRuntime(455):         at dalvik.system.NativeStart.main(Native Method)
05-07 17:32:36.570: W/ActivityManager(60):   Force finishing activity it.sarAndroid.Prova/ti.modules.titanium.ui.TiTabActivity
05-07 17:32:37.099: W/ActivityManager(60): Activity pause timeout for HistoryRecord{441465a0 it.sarAndroid.Prova/ti.modules.titanium.ui.TiTabActivity}

Premetto che l'applicazione non è sviluppata in Java, ma attraverso Titanium Appcelerator, che traduce in runtime il codice javascript, ma il debug è effettuato sulla traduzione java, dunque credo sia lo stesso.
In base al log, osso risalire alla riga di codice corrispondente all'errore?
Sto usando le Google APIs Android 2.2
Se serve qualche ulteriore dettaglio, fatemi sapere  :-)
« Ultima modifica: 07 Maggio 2012, 18:41:36 CEST da SarAndroid »

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:Errore tra una tab e l'altra
« Risposta #1 il: 07 Maggio 2012, 18:44:42 CEST »
0
Googlando in modo esatto l'errore che ottieni, mi è uscita una pagina del support di Appcelerator in cui si dice che è un bug noto della versione 1.8.0 ed è stato risolto dalla 1.8.0.1.

Possibile?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline SarAndroid

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: +1
    • Mostra profilo
Re:Errore tra una tab e l'altra
« Risposta #2 il: 07 Maggio 2012, 18:52:14 CEST »
0
Ciao e grazie per la risposta  :-)
Si, anche io avevo prima fatto una ricerca anche nella sezione Q&A di appcelerator, ma non ho trovato una soluzione, per questo ho voluto provare qui, visto che il problema si presenta solo per android (appceleretor traduce in runtime anche per ios, e per ios il codifce funziona perfettamente).
Io ho la versione 1.8.2, dunque il problema, dunque non credo sia un problema di versione, forse c'è qualcosa che ha a che vedere con l'uso dei tab in android.
In ios ad esempio quando passo da un tab ad ad un altro, le relative finestre vengono aperte e chiuse in automatico al tap sulla relativa tab. In android è anche così o è necessario chiudere la finestra ogni volta esplicitamente?
Io in ogni caso per sicurezza la chiudo...

Offline SarAndroid

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: +1
    • Mostra profilo
Re:Errore tra una tab e l'altra
« Risposta #3 il: 07 Maggio 2012, 19:07:40 CEST »
0
Mi è venuto in mente un altro dettaglio.
Nella mia applicazione io eseguo in una finestra un aggiornamento al database. Appena l'aggiornamento è stato eseguito, nella finestra dalla quale ho eseguito l'aggiornamento viene richiamato un alert per avvisare dell'esito dell'operazione, e subito dopo la finestra viene chiusa per visualizzare la tab che contiene i risultati aggiornati. Potrebbe essere quell'alert a generare l'errore? Perchè ho visto nell'Analisi dello stack di playgoogle il seguente messaggio:
Codice: [Seleziona]
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:751)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:474)
at android.view.WindowManagerImpl$CompatModeWrapper.removeView(WindowManagerImpl.java:163)
at android.app.Dialog.dismissDialog(Dialog.java:348)
at android.app.Dialog$1.run(Dialog.java:139)
at android.app.Dialog.dismiss(Dialog.java:333)
at ti.modules.titanium.ui.widget.TiUIDialog.hide(TiUIDialog.java:266)
at ti.modules.titanium.ui.AlertDialogProxy.handleHide(AlertDialogProxy.java:82)
at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:294)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:4944)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

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:Errore tra una tab e l'altra
« Risposta #4 il: 07 Maggio 2012, 19:21:26 CEST »
0
Purtroppo non ho mai usato Appcelerator, non mi viene in mente niente da dirti.  :-(

Hai già provato a chiedere nei forum o al supporto tecnico di Appcelerator?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline SarAndroid

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: +1
    • Mostra profilo
Re:Errore tra una tab e l'altra
« Risposta #5 il: 07 Maggio 2012, 19:27:26 CEST »
0
si, ho già provato... per questo mi sono orientata su un forum dedicato solo ad android...  :-(
Ma potrebbe essere dovuto a questa cosa? Cioè al fatto che l'alert viene generato in una finestra e che questa finestra viene chiusa mentre l'alert non è ancora stato chiuso?  :-\

Offline lucab

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +10
    • Mostra profilo
    • Lucabportal
  • Dispositivo Android:
    Nexus 5 - Nexus One
  • Play Store ID:
    Luca Biasotto
  • Sistema operativo:
    Mac OS X
Re:Errore tra una tab e l'altra
« Risposta #6 il: 25 Ottobre 2012, 16:36:28 CEST »
0
Ciao,
sei più riuscito a risolvere?

Io ho lo stesso problema con gli ActivityIndicator!
Nel mio caso sembrerebbe che nasce il problema se chiudo una Window lasciando l'activityIndicator aperto
Le occasioni arrivano una volta sola, se non le afferri al volo passeranno altri alla storia.

Offline lucab

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +10
    • Mostra profilo
    • Lucabportal
  • Dispositivo Android:
    Nexus 5 - Nexus One
  • Play Store ID:
    Luca Biasotto
  • Sistema operativo:
    Mac OS X
Re:Errore tra una tab e l'altra
« Risposta #7 il: 25 Ottobre 2012, 16:52:31 CEST »
0
Ciao,
sei più riuscito a risolvere?

Io ho lo stesso problema con gli ActivityIndicator!
Nel mio caso sembrerebbe che nasce il problema se chiudo una Window lasciando l'activityIndicator aperto

Con una breve indagine mi sono risposto da solo, magari può servire anche a te.
Non era come pensavo l'activity indicator, ma bensì un option dialog. Più precisamente scattava nella Window un evento che apriva l'alert proprio mentre chiudevo la window  :-o Mi è bastato evitare che questo evento scattasse durante la chiusura per risolvere.

Morale: in Titanium assicuratevi che allert/optionDialog siano chiusi prima di chiudere una Window (questo problema non si verifica in iOs)
Le occasioni arrivano una volta sola, se non le afferri al volo passeranno altri alla storia.