Visualizzazione stampabile
-
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
-
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
-
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
-
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?
-
Quote:
Originariamente inviato da
Matt39
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.
-
Grazie, quel new activity l avevo fatto perchè non sapevo più cosa fare..alla fine avevo sbagliato il manifest..