CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: complicazio con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 11 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 6 su 6
Discussione:

class<T> e .class

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano L'avatar di Supergiox


    Registrato dal
    Oct 2010
    Messaggi
    179

    Ringraziamenti
    5
    Ringraziato 10 volte in 8 Posts
    Predefinito

    class<T> e .class

    Ciao a tutti!
    Ho appena iniziato a studiare gli Intent e le Activity e ho subito notato questa istruzione:
    codice:
    Intent intent = new Intent(NomeActivity1.this, NomeActivity2.class);
    Dalla documentazione:
    codice:
    Intent(Context packageContext, Class<?> cls)
    Da quello che ho capito un Context è un oggetto generico di android, e la classe Context viene ereditata anche da Activity.

    Nell'esempio del libro si utilizza NomeActivity.this e non semplicemente this perchè l'istruzione si trova all'interno di una classe anonima, e in particolare il Listener del Button.

    Class<?> credo che sia una classe parametrizzata (simile ai template C?) e non mi è chiaro perchè viene usata, nè perchè quando la passiamo come parametro al costruttore di Intent usiamo la notazione NomeActivity2.class

  2.  
  3. #2
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Post

    Dunque, il Context rappresenta, in un certo modo, l' "ambiente" android, non per niente è sempre necessario averne uno per poter accedere alle varie risorse gestite in maniera android. Come hai ben detto tu un'Activity è un'estensione di Context e quindi ce la si cava quasi sempre con un this quando un Context è necessario (e noterai che è necessario quasi SEMPRE).

    La class ha il <T> perché se noti è anche così che vi si riferisce in javadoc (a te il dettagio), è la rappresentazione della classe in memoria. E' un .class a richiamare il compilato JAVA.

    Da un punto di vista del buon codice creare un intent così non è una buona cosa perché utilizzare nel codice il nome dei file come con .class è malvisto e in ogni caso è un modo considerato piuttosto grezzo.
    Sempre meglio creare l'intent con una action



    e poi impostare il filtro in manifest

    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  4. #3
    Androidiano L'avatar di Supergiox


    Registrato dal
    Oct 2010
    Messaggi
    179

    Ringraziamenti
    5
    Ringraziato 10 volte in 8 Posts
    Predefinito

    Nel mio caso dovevo semplicemente lanciare una nuova activity, quindi forse non c'è bisogno di definire l'intent filter all'interno del file manifest, giusto?

    Per quanto riguarda NomeActivity2.class passato come parametro, stai dicendo che indica il file presente in memoria che si chiama appunto "NomeActivity2.class"?

    Inizialmente ho pensato questo, però mi è sembrato strano il fatto che ci si riferisse ad un file senza l'uso delle virgolette
    Ultima modifica di Supergiox; 22-12-10 alle 01:24

  5. #4
    Senior Droid


    Registrato dal
    Feb 2009
    Messaggi
    536

    Ringraziamenti
    4
    Ringraziato 16 volte in 16 Posts
    Predefinito

    Ciao, non riesco a venirne fuori da queste activity..

    Ho questo codice:

    codice:
    Intent i = new Intent(this, classeX.class);
            i.putExtra("X", a.get(position).x);
            i.putExtra("Y", a.get(position).y);
            i.putExtra("Z", a.get(position).z);        
            startActivity(i);
            Activity a= new Activity();
            a.startActivity(i);
    mi da un java.lang.NullPointerException sull'ultima istruzione ma non so dove sbaglio..avendo Windows non riesco ad entrare nel metodo startActivity..

    Nel Manifest cosa dovrei scrivere?
    T-Mobile G1 -> HTC Legend -> Nexus One -> Galaxy Nexus

  6. #5
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    Quote Originariamente inviato da Matt39 Visualizza il messaggio
    Ciao, non riesco a venirne fuori da queste activity..

    Ho questo codice:

    codice:
    Intent i = new Intent(this, classeX.class);
            i.putExtra("X", a.get(position).x);
            i.putExtra("Y", a.get(position).y);
            i.putExtra("Z", a.get(position).z);        
            startActivity(i);
            Activity a= new Activity();
            a.startActivity(i);
    mi da un java.lang.NullPointerException sull'ultima istruzione ma non so dove sbaglio..avendo Windows non riesco ad entrare nel metodo startActivity..

    Nel Manifest cosa dovrei scrivere?
    No, no, no, niente new Activity.
    Immagino che questo codice sia già inserito in una activity quindi devi invocare lo startActivity della classe stessa

    startActivity(i);

    e basta.

    Nel manifest devi registrare i dati dell'activity da aprire.
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  7. Il seguente Utente ha ringraziato Cymon per il post:

    Matt39 (06-01-11)

  8. #6
    Senior Droid


    Registrato dal
    Feb 2009
    Messaggi
    536

    Ringraziamenti
    4
    Ringraziato 16 volte in 16 Posts
    Predefinito

    Grazie, quel new activity l avevo fatto perchè non sapevo più cosa fare..alla fine avevo sbagliato il manifest..
    T-Mobile G1 -> HTC Legend -> Nexus One -> Galaxy Nexus

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy