Autore Topic: Come risolvere problema di chimate tra Activity?  (Letto 913 volte)

Offline Qwertid

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
Come risolvere problema di chimate tra Activity?
« il: 12 Novembre 2011, 15:48:43 CET »
0
Ciao ragazzi  :-)

Ho un problema nella strutturazione del  mio progetto e vorrei, se possibile, un parere da parte vostra.

Praticamente ho un'activity che richiama svariate funzioni di una libreria (scritta comunque da me): tali funzioni dovrebbero richiamare mediante un'intent e una startActivityForResult una activity appunto (che chiameremo Interprete). Il problema sta nel fatto che tale libreria non è un'activity e quindi non può chiamare il metodo startActivityForResult. D'altro canto, però, Interprete dovrei utilizzarla soltanto nella maniera che vi ho specificato (a black box insomma).

Come mi consigliate di risolvere questa situazione?

Grazie  :-)

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:Come risolvere problema di chimate tra Activity?
« Risposta #1 il: 12 Novembre 2011, 16:25:35 CET »
0
In realtà è la tua activity primaria che richiama la funzione di libreria, per cui può passargli tutti i riferimenti necessari a chiamare anche la startActivityForResult.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Qwertid

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
Re:Come risolvere problema di chimate tra Activity?
« Risposta #2 il: 12 Novembre 2011, 16:43:05 CET »
0
In che modo? Una libreria che non è un'activity può richiamare quel metodo??? Che parametri necessita?

Potresti farmi anche solo un piccolo esempio (o descrivermelo brevemente): sarebbe davvero importante  ;-)

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:Come risolvere problema di chimate tra Activity?
« Risposta #3 il: 12 Novembre 2011, 16:59:32 CET »
+1
Se tu dovessi usare solo startActivity, basterebbe passare il context.

Ma visto che devi usare startActivityForResult io proverei un approccio di questo tipo (da provare se sta in piedi):

Nella ActivityUno tu la richiami la funzione di libreria passando un riferimento all'activity chiamante, scrivendo LanciaSeconda(ActivityUno.this). La funzione di libreria LanciaSeconda(ActivityUno sourceActivity) al suo interno lancia ActivityDue così sourceActivity.startActivityForResult(...).

Il problema è che quello che cerchi di fare è poco consistente, perchè per un buon partizionamento del codice sarebbe bene che codice chiamante e codice ricevente stiano insieme, invece tu metti quello che chiama in una libreria esterna e la ricezione all'interno dell'activity. Funzionare funziona, ma ha poco senso avere una libreria esterna se poi è legata così strettamente all'activity.
« Ultima modifica: 12 Novembre 2011, 17:03:30 CET da bradipao »
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Qwertid

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
Re:Come risolvere problema di chimate tra Activity?
« Risposta #4 il: 12 Novembre 2011, 18:20:38 CET »
0
Ti ringrazio per la spiegazione, ho capito adesso come devo procedere. Sono io il primo a rendermi conto che le cose così certo non sono fatte bene: purtroppo eredito codice altrui e devo tirarmi fuori dai guai quanto prima  :D

Una ulteriore domanda: il metodo "onActivityResult" adesso dove deve essere piazzato per processare l'output della startActivityForResult? Chi lo cattura con l'impostazione di chiamate che abbiamo dato su?

Grazie ancora  :-)

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:Come risolvere problema di chimate tra Activity?
« Risposta #5 il: 12 Novembre 2011, 20:31:03 CET »
0
Devi metterlo nell'activity chiamante.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Qwertid

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
Re:Come risolvere problema di chimate tra Activity?
« Risposta #6 il: 12 Novembre 2011, 22:04:56 CET »
0
Per activity chiamante intendiamo quella che chiama il metodo della libreria (che a sua volta invoca lo startActivityForResult utilizzando il riferimento all'activity chiamante stessa per farlo)? Se si, purtroppo ho provato ma non sembra funzionare...  :-(

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:Come risolvere problema di chimate tra Activity?
« Risposta #7 il: 13 Novembre 2011, 08:39:45 CET »
0
Affronta il problema per passi piú piccoli: metti un button nell'activity per eseguire la startactivityforresult e metti a punto il codice che riceve il risultato di ritirno, cosí togli l'incertezza della chiamata da libreria esterna.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store