Autore Topic: problema intent  (Letto 775 volte)

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
problema intent
« il: 05 Aprile 2013, 00:11:01 CEST »
0
Ciao a tutti, nella mia applicazione ho molte Activity e il mio problema è quello di tornare ad una specifica activity quando viene premuto un bottone. Cercando di spiegare un po' meglio, da un'activity A posso premere un bottone che mi porta su un'attività B e poi su una C. Dall'activity C ho la possibilità di premere un bottone e attraverso il passaggio di altre 3 differenti activity arrivo a fare una donazione. Vorrei che subito dopo aver donato tornassi all'attività A. La prima cosa che mi è venuta in mente è usare un startActivityForResult ma con tutti queste activity tra le quali devo passare prima di finire, non credo che vada bene. Qualcuno ha qualche idea? Grazie

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:problema intent
« Risposta #1 il: 05 Aprile 2013, 09:22:09 CEST »
0
Pulisci lo stack delle Activity e avvii nuovamente la Activity A

Codice: [Seleziona]
Intent intent = new Intent(getApplicationContext(), ActivityA.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:problema intent
« Risposta #2 il: 05 Aprile 2013, 16:30:38 CEST »
0
Provo e ti faccio sapere. Grazie in tutti i casi.


Post unito: 05 Aprile 2013, 17:01:10 CEST
Ho provato a fare come dici tu ma ho sempre lo stesso problema: quando torno all'Activity A non vedo + il menù di navigazione in basso e inoltre se torno indietro mi torna all'Activity prima di quella in cui dono, perché nell'activity in cui dono ho fatto l'override del metodo onBackPressed(). Non posso farlo nelle altre perchè devo avere la possibilità di poter decidere inizialmente di donare ma alla fine ripensarci e tenermi i soldi.
« Ultima modifica: 05 Aprile 2013, 17:01:10 CEST da elfo83, Reason: Merged DoublePost »

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:problema intent
« Risposta #3 il: 05 Aprile 2013, 17:36:01 CEST »
0
Due domande:
  • Cosa è il menu di navigazione in basso scusa? Se riesci a fare uno screenshot sarebbe un po' più chiaro
  • Riesci a fare uno schema veloce del workflow dei collegamenti tra le varie Activity?
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:problema intent
« Risposta #4 il: 05 Aprile 2013, 18:06:05 CEST »
0
Mi trovo nell'ActivityA e spingo il bottone verde che mi porta nell'ActivityB. Nell'ActivityB vado a girare la ruota e se vinco e non voglio raddoppiare la cifra vado nell'ActivityC. Decido di donare e clicci sul bottone Give andando nell'ActivityD. Scelgo ad esempio di donare alla prima associazione e vado all'ActivityE. Una volta che clicci sul bottone Donate, chiamo lo script per donare e vado nell'ultima pagina di ringraziamento, ovvero l'ActivityF. Ora quando clicci sul bottone Ok (che mi sono dimenticato di allineare) dovrei tornare all'ActivityA, offrendo all'utente la possibilità di cliccare su uno dei bottoni dell'AttivitàA e poter giocare nuovamente. Se clicci su Ok nell'ActivityF, però succede che l'ActivityA è diversa (la chiamerò ActivityZ). Come puoi ben vedere c'è qualcosa che non quadra, sia nel doppio titolo che nella barra di navigazione che non c'è +. Inoltre se clicci sul pulsante back torno all'ActivityE. Dato che posso inserire solo 4 allegati alla volta, i rimanenti li inserisco nella prossima risposta. Gli altri allegati te li mando in un messggio privato perchè al massimo posso caricarne 4.

Post unito: 05 Aprile 2013, 18:10:12 CEST
Il sistema non mi permette di allegarti immagini in un messaggio privato, se vuoi lasciami la tua mail che te le invio li.
« Ultima modifica: 05 Aprile 2013, 18:10:12 CEST da elfo83, Reason: Merged DoublePost »

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:problema intent
« Risposta #5 il: 05 Aprile 2013, 19:34:27 CEST »
0
Le altre immagini hostale su qualche sito, e posta i link
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:problema intent
« Risposta #6 il: 05 Aprile 2013, 20:44:54 CEST »
0
posto il nuovo link..

ImageShack Album - 7 images
« Ultima modifica: 05 Aprile 2013, 20:52:06 CEST da elfo83 »

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:problema intent
« Risposta #7 il: 05 Aprile 2013, 21:02:04 CEST »
0
Allora per evitare che dall'Activity A, dopo aver donato, torni alla Activity dei ringraziamenti, credo che puoi risolvere impostando la proprietà noHistory nel tag di quella activity nel manifest, così che non venga tracc

Codice: [Seleziona]
<activity
            ...
            android:noHistory="true">
        </activity>
Per l'altro problema ho poche idee a riguardo. Non ho mai visto quella barra in alto. Che sia una specie di ActionBar?
Nel caso:
Codice: [Seleziona]
// Only for Android 3.0 or above

getActionBar.Hide();

o se stai usando la SherlockAction Bar

Codice: [Seleziona]
getSupportActionBar.Hide();

Una domanda: dopo aver donato arrivi all'ActivityA, se premi back torni all'activity dei ringraziamenti da quel che hai detto. Se premi di nuovo back che succede?
« Ultima modifica: 05 Aprile 2013, 21:03:39 CEST da s1m0 »
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:problema intent
« Risposta #8 il: 05 Aprile 2013, 22:30:57 CEST »
0
Se premo back dall'ActivityZ dopo aver donato torno all'AttivitàE perché nell'AttivitàF, quando premo il pulsante Ok distruggo l'AttivitàF con il metodo finish(). Se premo una secondo volta back torno indietro All'AttivitàD fino all'AttivitàC, nella quale ho fatto l'override del metodo onBackPressed() e quindi non posso tornare + indietro. Hai notato che dopo che ho donato non ho + la barra di navigazione in basso? Quella con il mio nome, share, explore...

Post unito: 05 Aprile 2013, 22:33:58 CEST
Ho provato ad aggiungere noHistory ma non risolve il problema..io credo sia un problema di intent...
« Ultima modifica: 05 Aprile 2013, 22:33:58 CEST da elfo83, Reason: Merged DoublePost »

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:problema intent
« Risposta #9 il: 05 Aprile 2013, 23:27:31 CEST »
0
Metodo rozzo: chiama tante volte il metodo finish() quante sono le activity da chiudere per tornare alla prima activity (Activity A).

Activity A -> Activity B -> Activity C -> Activity D -> Activity E -> Activity F

Se è così, chiama il metodo cinque volte.
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:problema intent
« Risposta #10 il: 06 Aprile 2013, 04:55:23 CEST »
0
Non credo sia una buona soluzione :)

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:problema intent
« Risposta #11 il: 06 Aprile 2013, 11:08:32 CEST »
0
Beh perchè no? In questo modo tra l'altro avresti ancora la vecchia Activity A di cui viene fatto il resume (così ad esempio se prima eri in fondo alla lista, quando l'utente ci torna si trova ancora nella stessa posizione e magari si risolve anche il problema che mostravi nell'Activity Z).
« Ultima modifica: 06 Aprile 2013, 12:06:12 CEST da s1m0 »
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:problema intent
« Risposta #12 il: 09 Aprile 2013, 23:25:22 CEST »
0
Alla fine ho risolto il problema utilizzando startActivityForResult e settando RESULT_OK e RESULT_CANCELED. Nell'activityOnResult di ogni classe, nel caso in cui il risultato è ok allora chiamo finish(). Nel momento in cui vado a donare setto il risultato ok in modo tale che tutte le attività precedenti vengono terminate. Infine chiamo il metodo finish() anche quando clicco sul pulsante ok dell'attività dei ringraziamenti, in questo modo anche l'ultima attività che era nel task, sopra l'attività a cui voglio ritornare, è terminata.