Creazione oggetto

di il
4 risposte

Creazione oggetto

Salve a tutti,
ho trovato queste due righe in due programmi diversi. Sono simili.

ImageView imageView = (ImageView) findViewById (.....)

ImageView imgView=new ImageView(this);

Il loro funzionamento è lo stesso??
Mi potete spiegare l'argomento che parla di sestituire la parola new con il nome del tipo della variabile??
Perchè si deve farlo??

4 Risposte

  • Re: Creazione oggetto

    Per capire che cosa fanno le due righe, devi sapere come funziona Android e come si programma in Java: anche volendo essere brevi, ti servirebbe l'equivalente di DIVERSE centinaia di pagine.

    - che cosa e' new
    - che cosa e' this
    - che cosa e' una classe
    - che cosa e' un costruttore
    - che cosa e' una struttura gerarchica
    - che cosa e' un albero
    - che cosa e' il Reflection
    - che cosa e' il Casting
    - che cosa e' l'XML
    - che cosa e' una View
    - che cosa e' una GUI
    - ...

    Senza questo background, la spiegazione a che ti servirebbe?

    Al momento, puoi supporre che facciano approssimativamente la stessa cosa.
    Come ben saprai, il diavolo sta nei dettagli
  • Re: Creazione oggetto

    La prima dovrebbe servire per ottenere myimageview definita sotto R, la seconda dovrebbe creare un oggetto di tipo ImageView.
    E' corretto??

    Qual è l'argomento del Java che usa la sintassi (ImageView)? O è una sintassi usato solo per Android?
  • Re: Creazione oggetto

    Ciao, mi intrometto nella discussione.
    Con la prima sintassi, grazie al findViewById tu specifichi quale immagine stai associando, con la seconda invece no.
    Sono due cose totalmente diverse e io sinceramente consiglio la prima..
  • Re: Creazione oggetto

    rob* ha scritto:


    La prima dovrebbe servire per ottenere myimageview definita sotto R, la seconda dovrebbe creare un oggetto di tipo ImageView.
    E' corretto??

    Qual è l'argomento del Java che usa la sintassi (ImageView)? O è una sintassi usato solo per Android?
    Partiamo dal presupposto che quello che ti riporto qui è una versione semplicistica del funzionamento, anche perchè ci sarebbe prima da parlare del metodo setContentView(...) o inflate (nel caso si parli di Fragment)....

    ImageView è una sottoclasse di View definita in Android per rappresentare un oggetto che visualizza un'immagine all'utente.

    La differenza tra le due operazioni, come dice migliorabile, sta appunto nei dettagli:
    findViewById (.....) è un metodo della classe View che ritorna l'istanza di una View CONTENUTA della View root (sia essa una View o una ViewGroup o un Layout) recuperando la View interessata tramite l'id definito all'interno dell'xml (non entriamo nel merito R e quant'altro altrimenti ci infanghiamo).

    Con questo metodo tu istanzi una variabile che fa riferimento alla View dichiarata nel layout e presente (si spera) all'interno di esso, in caso contrario il metodo ritorna un null..
    Il tutto viene poi castato (ImageView) perchè il metodo ritorna un oggetto generico di tipo View, quindi per farlo combaciare alla varibile (in modo tale che si abbia visibilità ai suoi metodi specifici) si deve "obbligare" Java a vedere l'oggetto ritornato come classe scritta tra parentesi
    new ImageView(this) invece ritorna un'istanza di un oggetto ImageView che NON è riferita a nessuna View DEFINITA IN PRECEDENZA all'interno della View root, e che quindi non risulta visibile all'utente fino a che non si aggiunge tramite metodi specifici (e impostando i dovuti parametri di posizionamento) alla "schermata" che l'utente vede.
    Fino a quel momento, tu poi richiamare metodi e settare valori in tale ImageView (o TextView, Button, EditText ...) ma l'utente non potrà interagire e scatenare eventi finchè non sarà iniettata tramite codice, nel layout visibile all'utente..
Devi accedere o registrarti per scrivere nel forum
4 risposte