Autore Topic: Aiuto per passare da tabview a pageview  (Letto 942 volte)

Offline RogoMantiK

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia Neo
Aiuto per passare da tabview a pageview
« il: 03 Luglio 2012, 17:05:31 CEST »
0
ho fatto un programma tempo fa che usa delle tab (che a seconda del contesto ne posono essere tre o una)
il programma è formato da una classe madre collegata ad un layout
una classe extends TabActivity collegata con un layout ( che contiene TabHost, TabWidget, FrameLayout)
e altre tre classi con layout personalizzati che vengono avviate da tabactivity tramite
tabHost.newTabSpec - tabHost.addTab

la classe madre genera una stringa che la passa a TabActivity che a sua volta dopo dei calcoli decide se creare uno o tre tab e passa una o due strighe.

i dati vanno solo in un verso non ho bisogno che tornino alla classe madre.
inoltre nelle tab ho degli onclick lintener che mi avviano un'altra activity

io vorrei semplicemente avere la  stessa cosa solo che invece di selezionare le tabs devo passare il dito  sullo schermo.
come faccio???
ho gia letto [medio] Activity con ViewPager e Fragments
ma ho tovato dei problemi  perche nei fragments non riesco ad usare comandi come getpackagename() oppure avviare delle activity
inoltre non mi chiaro come passare i dati. si usa un comando tipo putString oppure bisogna fare qualcosa nel pagerAdapter o altro ancora?

in attesa di risposte vi ringrazio tutti!

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:Aiuto per passare da tabview a pageview
« Risposta #1 il: 03 Luglio 2012, 17:13:23 CEST »
0
ho gia letto [medio] Activity con ViewPager e Fragments
ma ho tovato dei problemi  perche nei fragments non riesco ad usare comandi come getpackagename() oppure avviare delle activity
inoltre non mi chiaro come passare i dati. si usa un comando tipo putString oppure bisogna fare qualcosa nel pagerAdapter o altro ancora?

Purtroppo non ho una risposta "semplice". Quel tutorial l'ho fatto come pretesto per iniziare ad usare i Fragments, ed ho cercato di fare le cose nel modo più semplice possibile, incluso il passaggio dati. Purtroppo convengo con il giudizio che non è per niente banale usare i Fragments, e infatti per ora tendo ad evitarli in tutte le app che faccio. Tornando al tuo problema, che hai genericamente esposto come difficoltà a passare i dati, nel tutorial ho usato funzioni di callback per evitare dipendenze dirette tra i Fragments; hai seguito la stessa strada?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Aiuto per passare da tabview a pageview
« Risposta #2 il: 03 Luglio 2012, 17:17:57 CEST »
0
ma ho tovato dei problemi  perche nei fragments non riesco ad usare comandi come getpackagename() oppure avviare delle activity

La classe Fragment, a differenza di Activity, non implementa Context.
Quindi per chiamare getPackageName(), startActivity() ecc ecc devi fare getActivity().getPackageName() ecc ecc.

Offline RogoMantiK

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia Neo
Re:Aiuto per passare da tabview a pageview
« Risposta #3 il: 04 Luglio 2012, 09:00:12 CEST »
0
i dati non li ho ancora passati ci provo in giornata,
poi non ho capito bene a cosa serve la classe PagerAdapter nel senso che ho visto che quella proposta da te è molto breve mentre in altri tutorial (uno preso da github e l'altro preso dagli esempi del support package) è molto complicata.

in pratica il PagerAdapter inserisce i fragment oppure li crea pure ?
io dovrei inserire uno o tre fragment, faccio una struttura (tipo if) nella classe principale che nella parte

// creating fragments and adding to list
fragments.add(Fragment.instantiate(this,Page1Fragment.class.getName()));

inoltre nelle tab ho in un caso 6 imageview e 4 textview inseriti in linear layout e relativelayou in cui inserire dati diversi a seconda di un evento della classe principale oppure una tabview vuota dove creo dei textview in java. nel fragment (dove non uso oncreate ma onCreateView).

//I fragment con le textview hanno una funzione membro che permette di scrivere nella textview stessa
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)

 questa riga coosa modifica? il ViewGroup container si riferisce al contenitore dei fragment mentre la view che restituisce è la modifica di un elemento nel layout del fragment.
qui dentro posso mettere tutto le modifiche che voglio o modificare un campo alla volta e restituire una view alla volta?

scusa se sono poco chiaro ma adesso sto scrivendo a memoria, non ho sott'occhio il programma. dopo ripeto tutti i passaggi in eclipse e cerco di essere piu chiaro

grazie per la rima risposta molto rapida

Offline RogoMantiK

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia Neo
Re:Aiuto per passare da tabview a pageview
« Risposta #4 il: 05 Luglio 2012, 09:43:49 CEST »
0
La classe Fragment, a differenza di Activity, non implementa Context.
Quindi per chiamare getPackageName(), startActivity() ecc ecc devi fare getActivity().getPackageName() ecc ecc.

grazie questo problema non mi faceva compilare e quindi non potevo vedere gli altri errori.
i passaggi di dati li ho risolti non con una funzione ma con una Bundle e con
setArguments ; getArguments

il programma funziona correttamente però adesso ho il problema dei banner di admob,
se il pager nell'XML della fragmentActivity lo faccio piu piccolo lasciando spazio  per il banner e poi creo adview eccetera nella fragment activity, quando poi eseguo i lprogramma sul cellulare non mi compare nessun banner. stessa cosa se il banner lo creo e eseguo direttamente nell'XML

se il banner lo metto nell'XML di un fragment  in un layout apposito poi ho problemi nel comando
adview = new AdView (getActivity(), size.....);

se metto questa riga ed eseguo il programma non mi vengono visualizzate le pagine, esce solo una pagina tutta nera e con un banner in alto allo shermo. il layout del fragment non viene visualizzato e non posso scorrere nemmeno gli altri fragment

se uso il comando this.getActivity() mi da sempre problemi.

tu sai come e se si puo mettere un banner in un fragment che scorre insieme alla pagina?
oppure sarebbe meglio fare il il pager piu piccolo e aggiungerlo sotto?