Autore Topic: Passaggio da una activity ad un'altra con AlertDialog  (Letto 3965 volte)

Offline wariat

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc magic
  • Sistema operativo:
    Windows
Passaggio da una activity ad un'altra con AlertDialog
« il: 08 Giugno 2010, 15:50:31 CEST »
0
ciao ragazzi, ho un piccolo prblemino.  :-P
nella mia applicazione viene lanciata un'activity che funge da splash screen dopo la quale viene richiamata l'activity principale.
in questa activity viene aperta una connessione ad internet e a volte il caricamento richiede alcuni secondi (solitamente meno di uno ma a volte puo` accedere che impighi fino a 5/6 secondi). vorrei evitare che tra il passaggio dallo splash screen all'activity venga visualizzata una schermata nera statica, ma dire all'utente tramite alert dialog o toast che e` in corso il caricamento.

come posso fare??ho provato ad inserire un toast ma questo non viene visualizzato nel periodo "transitorio" da un'activity all'altra ma solo dopo il caricamento dell'activity principale.
avete qualche idea??

Offline noodles

  • Utente junior
  • **
  • Post: 130
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #1 il: 08 Giugno 2010, 16:15:42 CEST »
0
Immagino che apri una connessione internet per scaricare qualcosa da remoto e penso tu lo faccia o con thread di backgorund. Detto questo, la cosa migliore che puoi fare è utilizzare una progress dialog mentre attendi che il thread abbia scaricato i dati e la levi quando ha finito.

Offline wariat

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc magic
  • Sistema operativo:
    Windows
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #2 il: 08 Giugno 2010, 16:20:14 CEST »
0
no, infatti volevo utilizzare un thread ma non capisco perche` non ci riesco.
come posso fare??o meglio come si apre un thread in modo corretto cosi` vediamo subito se sbaglio qualcosa.

Offline wariat

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc magic
  • Sistema operativo:
    Windows
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #3 il: 08 Giugno 2010, 19:16:48 CEST »
0
io provo a lanciarla così :
Codice (Java): [Seleziona]
Thread t = new Thread() {

public void run() {
    while (true) {
                 Intent intent = new Intent(SplashScreen.this, AndroidRssReader.class);
                 startActivity(intent);
                 Toast.makeText(SplashScreen.this, "Il caricamento dei feed potrebbe richiedere alcuni secondi", Toast.LENGTH_LONG).show();
                 }
         }
  };
t.start();

ma l'applicazione va in crash.. o meglio mentre va in crash si carica tutto come si deve.. se invece la faccio partire in debug no..
HELP!!!!
« Ultima modifica: 08 Giugno 2010, 20:33:28 CEST da JD »

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #4 il: 08 Giugno 2010, 19:37:07 CEST »
0
"crash" non dice niente, posta il logcat per le prossime volte...
comunque non puoi fare startActivity da una thread. mostrare un toast da una thread

[facile] Aggiornare la UI da una Thread - Android Developers Italia

« Ultima modifica: 08 Giugno 2010, 22:32:13 CEST da Qlimax »

Offline wariat

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc magic
  • Sistema operativo:
    Windows
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #5 il: 08 Giugno 2010, 20:01:41 CEST »
0
ECCOLO.. sorry.. :-[
Codice: [Seleziona]
06-08 17:58:53.017: INFO/ActivityManager(53): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.globetrotter/.SplashScreen }
06-08 17:58:53.237: INFO/ActivityManager(53): Start proc com.android.globetrotter for activity com.android.globetrotter/.SplashScreen: pid=235 uid=10024 gids={3003}
06-08 17:58:53.467: DEBUG/dalvikvm(30): GC freed 273 objects / 10416 bytes in 210ms
06-08 17:58:53.626: INFO/jdwp(235): received file descriptor 20 from ADB
06-08 17:58:53.716: DEBUG/dalvikvm(30): GC freed 45 objects / 1968 bytes in 214ms
06-08 17:58:53.867: INFO/dalvikvm(235): Debugger has detached; object registry had 2 entries
06-08 17:58:53.947: DEBUG/dalvikvm(30): GC freed 2 objects / 48 bytes in 221ms
06-08 17:58:54.847: INFO/jdwp(235): received file descriptor 30 from ADB
06-08 17:58:54.887: DEBUG/ddm-heap(235): Got feature list request
06-08 17:58:54.938: INFO/ActivityManager(53): Displayed activity com.android.globetrotter/.SplashScreen: 1772 ms (total 1772 ms)
06-08 17:58:57.627: INFO/ActivityManager(53): Starting activity: Intent { cmp=com.android.globetrotter/.AndroidRssReader }
06-08 17:58:57.656: WARN/dalvikvm(235): threadid=17: thread exiting with uncaught exception (group=0x4001aa28)
06-08 17:58:57.676: ERROR/AndroidRuntime(235): Uncaught handler: thread Thread-9 exiting due to uncaught exception
06-08 17:58:57.676: ERROR/AndroidRuntime(235): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
06-08 17:58:57.676: ERROR/AndroidRuntime(235):     at android.os.Handler.<init>(Handler.java:121)
06-08 17:58:57.676: ERROR/AndroidRuntime(235):     at android.widget.Toast.<init>(Toast.java:68)
06-08 17:58:57.676: ERROR/AndroidRuntime(235):     at android.widget.Toast.makeText(Toast.java:231)
06-08 17:58:57.676: ERROR/AndroidRuntime(235):     at com.android.globetrotter.SplashScreen$1$1.run(SplashScreen.java:60)
06-08 17:58:57.697: INFO/Process(53): Sending signal. PID: 235 SIG: 3
06-08 17:58:57.707: INFO/dalvikvm(235): threadid=7: reacting to signal 3
06-08 17:58:57.847: INFO/dalvikvm(235): Wrote stack trace to '/data/anr/traces.txt'
06-08 17:58:59.527: INFO/ActivityManager(53): Displayed activity com.android.globetrotter/.AndroidRssReader: 1887 ms (total 1887 ms)
06-08 17:59:05.207: DEBUG/dalvikvm(110): GC freed 84 objects / 3840 bytes in 105ms
« Ultima modifica: 08 Giugno 2010, 20:34:25 CEST da JD »

Offline noodles

  • Utente junior
  • **
  • Post: 130
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #6 il: 08 Giugno 2010, 20:16:44 CEST »
+1
l'errore si riferisce al fatto che usi un toast dentro un thread che non è un looper. E cmq quel pezzo di codice non mi pare abbia troppo senso. Usi in thread che in loop fa partire delle activity?  o_O

Prima di buttare giù codice, facci capire bene cosa devi fare e come hai pensato di farlo tu.

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #7 il: 08 Giugno 2010, 20:48:04 CEST »
0
l'errore si riferisce al fatto che usi un toast dentro un thread che non è un looper. E cmq quel pezzo di codice non mi pare abbia troppo senso. Usi in thread che in loop fa partire delle activity?  o_O

Prima di buttare giù codice, facci capire bene cosa devi fare e come hai pensato di farlo tu.
quoto al 100%

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #8 il: 08 Giugno 2010, 21:36:42 CEST »
0
Prova a mettere il toast fuori dal thread. Cosí contemporaneamente parte il thread e il toast.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #9 il: 08 Giugno 2010, 21:42:56 CEST »
0
Ma tra l'altro il while(true) a che serve??  :-o :-o

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #10 il: 08 Giugno 2010, 22:46:22 CEST »
0
Ma tra l'altro il while(true) a che serve??  :-o :-o
Lol manco ci avevo fatto caso.. In pratica tu lanci infinite volte l'activity.. o forse lo start dell'activity funge da break?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline wariat

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc magic
  • Sistema operativo:
    Windows
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #11 il: 09 Giugno 2010, 00:35:47 CEST »
0
 :-[ avevo copiato male il pezzo di codice scusate.. ho tolto il toast e ora tutto funziona.. ma ho sempre il problema della schermata nera tra un'activity e l'altra che a volte dura dura troppo.. per carità non è un problemone ma non vorrei che l'utente pensasse che l'applicazione si sia bloccata.

se la faccio partire dall'emulatore il passaggio è praticamente immediato, mentre sul telefono non sempre, non so se dipende dalla rete o dal telefono ma comunque nel caso pratico potrebbe verificarsi un'attesa di qualche secondo.

voi che mi suggerite di fare?

Offline noodles

  • Utente junior
  • **
  • Post: 130
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #12 il: 09 Giugno 2010, 00:58:26 CEST »
0
io solitamente utilizzo nelll'activity un handler e faccio partire una progress dialog, così l'utente capisce che è in attesa di dati dalla rete.
Per scaricare i dati utilizzo un thread che quando ha finito manda un messaggio all'activity. Questo messaggio verrà catturato dall'handler, nel quale interrompo la progress dialog e visualizzi il risultato.

Credo, ma non ho mai provato e penso che sapranno rispondere gli altri, che si possa fare altrettanto usando un AsyncTask, chiedo conferma però.

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #13 il: 09 Giugno 2010, 01:17:42 CEST »
+1
io solitamente utilizzo nelll'activity un handler e faccio partire una progress dialog, così l'utente capisce che è in attesa di dati dalla rete.
Per scaricare i dati utilizzo un thread che quando ha finito manda un messaggio all'activity. Questo messaggio verrà catturato dall'handler, nel quale interrompo la progress dialog e visualizzi il risultato.

Credo, ma non ho mai provato e penso che sapranno rispondere gli altri, che si possa fare altrettanto usando un AsyncTask, chiedo conferma però.

con un AsyncTask:
nel metodo onPreExecute fai partire la progress dialog
nel metodo doInBackground scarichi i dati
se non è una progress indererminata, nel metodo onProgressUpdate incrementi il progresso
ed infine del metodo onPostExecute interrompi la progress e visualizzi il risultato

:)

Offline noodles

  • Utente junior
  • **
  • Post: 130
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:Passaggio da una activity ad un'altra con AlertDialog
« Risposta #14 il: 09 Giugno 2010, 01:35:49 CEST »
0
via devo abbandonare gli handler e passare agli asynctask, mi pare siano molto più puliti come soluzione  :D