Autore Topic: Passaggio dati activity - fragment  (Letto 611 volte)

Offline Peppin2o

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 8.1 Pro x64
Passaggio dati activity - fragment
« il: 12 Febbraio 2014, 12:49:49 CET »
0
Salve ragazzi!

Parliamo di SlidingPane Layout.
Ho bisogno di passare una lista di categorie dall'activity container (che ha ricevuto tale lista da un'altra activity) al fragment. Ho già predisposto le interfacce e tutto funziona fino a quando i dati sono statici, cioè trasmessi da codice all'interno del fragment stesso. Come posso far sì che i dati caricati in questa lista siano presi dall'activity principale all'instanziazione del fragment (onAttach())?

Ripeto, le interfacce che la gestione degli eventi ce le ho, ma mi manca il caricamento "dinamico" dei dati nel fragment :|

Grazie per le risposte ;)

Offline ciccio

  • Utente junior
  • **
  • Post: 65
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Francesco Cervone
  • Sistema operativo:
    Mac OS X 10.9
Re:Passaggio dati activity - fragment
« Risposta #1 il: 12 Febbraio 2014, 15:21:12 CET »
0
Ci sono tantissimi modi per farlo. Il modo più corretto di passare argomenti al fragment è questo:
Codice (Java): [Seleziona]
MyFragment myFragment = new MyFragment();
Bundle args = new Bundle();
args.putXXX("arg", myArg);
myFragment.setArguments(args);
Ovviamente all'interno del fragment puoi prelevare in qualsiasi momento questi dati tramite il metodo getArguments().

Offline Peppin2o

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 8.1 Pro x64
Re:Passaggio dati activity - fragment
« Risposta #2 il: 12 Febbraio 2014, 16:13:09 CET »
0
Ciao, grazie della risposta

prendendo come esempio questo tutorial:
[medio] Il nuovo SlidingPaneLayout - Android Developers Italia

in cui viene descritta splendidamente lo slidingpane, non c'è l'instanziazione del fragment.Quale sarebbe la giusta soluzione qui? :|

Offline ciccio

  • Utente junior
  • **
  • Post: 65
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Francesco Cervone
  • Sistema operativo:
    Mac OS X 10.9
Re:Passaggio dati activity - fragment
« Risposta #3 il: 12 Febbraio 2014, 16:47:02 CET »
0
In quella guida viene associata la classe del fragment direttamente nel file xml, quindi devi usare un altro metodo per passare argomenti al fragment. Non sono molto pratico dello SlidingPane ma sicuramente c'è un modo per intercettare il click sulla lista sulla sinistra, momento nel quale bisogna passare gli oggetti al fragment di dettaglio.
Potresti associare i fragment all'activity dinamicamente e non staticamente (nell'xml, per esempio android:name="it.gmariotti.android.examples.slidingpane.DetailFragment") come nella guida, in modo tale da mantenere un riferimento ad entrambi i fragment e quindi permettendoti di farli comunicare quanto ti pare.

In alternativa forse questa guida fa al caso tuo: http://www.survivingwithandroid.com/2013/10/android-slidingpanelayout-tutorial.html

Come ultima spiaggia, una soluzione (forse un po' sporca) sarebbe questa: potresti creare un metodo nell'activity per prelevare i dati in questo modo:
Codice (Java): [Seleziona]
public ArrayList<T> getMyData() {...}Nel metodo onAttach del fragment, tramite casting esplicito ti salvi l'activity container, e quando ti serve fai uso del metodo getMyData() per prelevare i dati ogni volta che vuoi.

Offline Peppin2o

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 8.1 Pro x64
Re:Passaggio dati activity - fragment
« Risposta #4 il: 12 Febbraio 2014, 17:57:44 CET »
0
ho provato a creare due metodi
Codice (Java): [Seleziona]
public SaveOrderData getSaveOrder(){
                return saveOrder;
        }
       
        public SaveDataList getSaveData(){
                return saveData;
        }

nell'activity.

Nella classe fragment, nel metodo onAttach() ho inserito queste righe:
Codice (Java): [Seleziona]
Activity GUIactivity = activity;
            SaveOrderData saveData=activity.getSaveData();

Il metodo getSaveData() non può essere eseguito perché non fa parte della classe activity. Cosa ho sbagliato?

Offline ciccio

  • Utente junior
  • **
  • Post: 65
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Francesco Cervone
  • Sistema operativo:
    Mac OS X 10.9
Re:Passaggio dati activity - fragment
« Risposta #5 il: 12 Febbraio 2014, 18:16:42 CET »
0
Devi fare il casting esplicito. Se la classe della tua activity si chiama MyActivity allora devi scrivere nel metodo onAttach questa riga:

MyActivity GUIActivity = (MyActivity) activity;

Il resto resta uguale.

Inviato dal mio Nexus 5 utilizzando Tapatalk


Offline Peppin2o

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 8.1 Pro x64
Re:Passaggio dati activity - fragment
« Risposta #6 il: 12 Febbraio 2014, 18:48:45 CET »
0
Si, hai ragione, me ne sono accorto dopo che l'ho scritto e non ho modificato il post. Sembra che per ora questo metodo "forza bruta" funzioni! ;)

Grazie mille dell'aiuto (e della pazienza!) :D