Autore Topic: Avvio di un Fragment  (Letto 769 volte)

Offline imugno

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 4
  • Sistema operativo:
    Windows 7
Avvio di un Fragment
« il: 20 Aprile 2013, 18:49:49 CEST »
0
Buon pomeriggio a tutti!!  :-)
È più o meno una settimana che mi sono messo a programmare, seguendo guide in qua e là, specialmente quelle di developer.android che sono veramente ben fatte, e fino ad ora tutto bene......
Sono arrivato al capitolo sulla costruzione di UI dinamiche con i fragments, ma proprio non ci tolgo le gambe.... premetto di aver già letto la guida introduttiva ai fragments su questo bel forum, ma riassumeva quello che già diceva l'altra guida.....
Quindi, il punto è questo:
- su Eclipse ho creato questo nuovo progetto, con una sola activity (API level da 11 a 17, perché ho letto che i frame sono stati introdotti nella 11, e sennò credo sia ancora più complicato gestire per versioni precedenti... per adesso voglio solo imparare a grosse linee come si fa....)
- nel layout principale ho messo un fragment in questo modo:
Codice (XML): [Seleziona]
<fragment
       android:id="@+id/fragment_container"
       android:name="android.app.ListFragment"
       android:layout_width="match_parent"
       android:layout_height="match_parent" />
- poi ho fatto New -> Android Object ->New Blank Fragment, e ho notato che si genera il file .java (che ho chiamato Frammento1) già bello sistemato, quindi a logica dovrebbe già esser possibile avviarlo, anche se è solo una pagina vuota..... (o mi sbaglio??)
- adesso nel file .java dell'activity principale ho scritto:
Codice (Java): [Seleziona]
public class MainActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
                Frammento1 frammento = new Frammento1();  //crea un fragment
                frammento.setArguments(getIntent().getExtras()); //raccatta eventuali extra, se il fragment è stato richiamato con un intento
                getFragmentManager().beginTransaction()  //avvia una transizione
                                    .add(R.id.fragment_container, frammento) //inserisce il frammento nel 'fragment_container'
                                    .commit(); //esegue la transizione
        }
}

ill problema è che da errore alla penultima riga di codice ".add(R.id.fragment_container, frammento)" perché per lui il secondo paramentro deve essere di tipo Fragment, anche se Frammento1 è un estensione di Fragment, quindi secondo me dovrebbe andar bene, anche perché su ogni guida che ho letto è fatto allo stesso modo.... come per esempio a questa pagina: http://developer.android.com/guide/components/fragments.html
Codice: [Seleziona]
You can then add a fragment using the add() method, specifying the fragment to add and the view in which to insert it. For example:

ExampleFragment fragment = new ExampleFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();

Cos'è che sbaglio? Non ci ho capito nulla, e si fa prima a dire cosa non sbaglio?? :-P
Grazie a coloro che mi daranno mano!!  ;-)
Buona giornata!

PS: spero di aver scritto tutto a modino, anche se forse mi sono dilungato troppo.... scusate!!
« Ultima modifica: 21 Aprile 2013, 12:34:18 CEST da Ricky` »

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
0
Posta il codice completo. Secondo me stai facendo confusione tra i Fragment delle API 11+ e quelli della support library.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline imugno

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 4
  • Sistema operativo:
    Windows 7
Re:Avvio di un Fragment
« Risposta #2 il: 21 Aprile 2013, 13:56:59 CEST »
0
yep, ti allego tutto il progetto!!

Comunque si, è mooooolto probabile che abbia fatto confusione fra comandi vecchi e nuovi!  ;-)
« Ultima modifica: 21 Aprile 2013, 13:59:41 CEST da imugno »

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:Avvio di un Fragment
« Risposta #3 il: 21 Aprile 2013, 15:01:35 CEST »
+2
Frammento1 estende dai Fragment della support library, lo vedi dall'import:
import android.support.v4.app.Fragment;
Il metodo getFragmentManager() ritorna il FragmentManager delle API 11+. Se vuoi usare i fragment della support library devi estendere FragmentActivity, usare getSupportFragmentManager() e stare attento a importare sempre le classi corrispondenti.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline imugno

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 4
  • Sistema operativo:
    Windows 7
Re:Avvio di un Fragment
« Risposta #4 il: 21 Aprile 2013, 15:47:35 CEST »
0
aaahh!! Ho capito, avevo mescolato le librerie API 11+ con le precedenti!! Eh, si, perché Frammento1 l'ho creato in automatico con Eclipse, e da solo aveva importato le support library, invece di quella API 17 che stavo usando nel MainActivity.java

oookk!! grazie mille, metto risolto!!  :D

EDIT: come faccio a ringraziarti? avevo letto che c'era un tasto tanks, da qualche parte...!!

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:Avvio di un Fragment
« Risposta #5 il: 21 Aprile 2013, 17:38:02 CEST »
0
Su ogni post di ogni utente c'é il tasto thanks, in alto a destra ;)
Postate il LogCat LogCat LogCat LogCat LogCat