CERCA
PER MODELLO
FullScreen Chatbox! :)

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

Pagina 1 di 3 123 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 24
Discussione:

Problema con Java

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

    Problema con Java

    Ciao a tutti, premetto che ho qualche conoscenza di java ma non troppo avanzata e sto studiando da un paio di giorni la programmazione per android da l libro di Massimo Carli.

    Forse più avanti il libro spiegherà meglio questa parte, intanto preferirei capire la sintassi visto che non l'ho mai usata in java:
    codice:
    pressButton.setOnClickListener(new OnClickListener() {
    
    			public void onClick(View v) {
    				outputView.setText("Click # " + counter++);
    			}
    
    		});

    Scusate l'ignoranza, ma non saprei come approfondire il concetto perchè non so come viene chiamato questo "paradigma"

    Ciao a tutti e grazie per l'attenzione
    Ultima modifica di Supergiox; 14-12-10 alle 19:17

  2.  
  3. #2
    Androidiano


    Registrato dal
    Apr 2009
    Messaggi
    163

    Ringraziamenti
    2
    Ringraziato 8 volte in 8 Posts
    Predefinito

    in poche parole non fai altro con questo codice che settare un listener sul tuo button che si preoccupa di gestire la pressione del tuo button attraverso il metodo onClick(View v), nel tuo caso specifico alla pressione del button non fai altro che settare il testo di una textView.
    fammi sapere se hai bisogno di altre delucidazioni

  4. #3
    Androidiano L'avatar di Supergiox


    Registrato dal
    Oct 2010
    Messaggi
    179

    Ringraziamenti
    5
    Ringraziato 10 volte in 8 Posts
    Predefinito

    Ciao e grazie per la tua disponibilità

    In realtà non mi sono spiegato molto bene... il compito del programma, cioè quello di settare un listener sul pulsante ed eseguire l'azione, l'ho capito.

    Quello che non ho capito è il compito della new all'interno delle parentesi tonde...
    cioè, vorrei capire meglio cosa succede a livello di riferimenti, parametri ecc..

    Nella mia scarsa esperienza con Java, non mi era mai capitato di vedere una cosa del tipo:

    metodo1( new metodo2{ ... } );

    E ho preferito pormi qualche domanda su java prima di continuare a leggere dando per scontata questa sintassi.

  5. #4
    Androidiano


    Registrato dal
    Apr 2009
    Messaggi
    163

    Ringraziamenti
    2
    Ringraziato 8 volte in 8 Posts
    Predefinito

    in poche parole il new serve ad istanziare un nuovo listener sarebbe lo stesso se istanziassi prima il listener ad esempio così
    codice:
    OnClickListener clickListener=new OnClickListener(){ public void onClick(View v){ ...}  }
    e poi lo passi come parametro al metodo setOnClickListener(clickListener) così

    oppure potresti far si che la tua classe implementi OnClickListener e passare this come riferimento al metodo setOnClickListener(this) in questa maniera

    non so se sono stato esauriente ma non credo ci sia di più da dire fammi sapere

  6. #5
    Androidiano L'avatar di Supergiox


    Registrato dal
    Oct 2010
    Messaggi
    179

    Ringraziamenti
    5
    Ringraziato 10 volte in 8 Posts
    Predefinito

    Sei stato chiarissimo!

    Ti faccio un'altra domanda così mi tolgo ogni dubbio (spero)...

    Io ho sempre usato la new in questo modo:
    codice:
    new Oggetto( eventuali parametri per il costruttore);
    Perchè invece, in questo caso, dopo le parentesi tonde si usano le graffe come se si volesse definire il metodo?

    codice:
    new Oggetto( eventuali parametri per il costruttore){
    istruzioni
    }
    ;
    Ultima modifica di Supergiox; 14-12-10 alle 20:24

  7. #6
    Androidiano


    Registrato dal
    Apr 2009
    Messaggi
    163

    Ringraziamenti
    2
    Ringraziato 8 volte in 8 Posts
    Predefinito

    proprio perchè inizialmente vai ad instanziare l'interfaccia del listener con new onClickListener e dopo le parentesi graffe tu vai ad implementare il metodo onClick();

  8. #7
    Androidiano L'avatar di Supergiox


    Registrato dal
    Oct 2010
    Messaggi
    179

    Ringraziamenti
    5
    Ringraziato 10 volte in 8 Posts
    Predefinito

    Quote Originariamente inviato da blaster Visualizza il messaggio
    proprio perchè inizialmente vai ad instanziare l'interfaccia del listener con new onClickListener e dopo le parentesi graffe tu vai ad implementare il metodo onClick();
    Ora ho un pò di confusione
    Che io sappia, un'interfaccia ha proprio la caratteristica che non può essere instanziata...

    A parte questo, vediamo se ho capito:
    fare
    codice:
     new Interfaccia(){
    void metodo1(){
    ...
    }}
    significa instanziare un'oggetto di Interfaccia che avrà un unico metodo implementato (cioè metodo1) e tutti gli altri astratti?

  9. #8
    Senior Droid


    Registrato dal
    Dec 2009
    Messaggi
    307

    Ringraziamenti
    15
    Ringraziato 40 volte in 39 Posts
    Predefinito

    Quote Originariamente inviato da Supergiox Visualizza il messaggio
    Ora ho un pò di confusione
    Che io sappia, un'interfaccia ha proprio la caratteristica che non può essere instanziata...

    A parte questo, vediamo se ho capito:
    fare
    codice:
     new Interfaccia(){
    void metodo1(){
    ...
    }}
    significa instanziare un'oggetto di Interfaccia che avrà un unico metodo implementato (cioè metodo1) e tutti gli altri astratti?
    Più precisamente con quella sintassi dichiari una classe anonima che implementa quella interfaccia

  10. Il seguente Utente ha ringraziato Orochi per il post:

    Supergiox (14-12-10)

  11. #9
    Androidiano L'avatar di Supergiox


    Registrato dal
    Oct 2010
    Messaggi
    179

    Ringraziamenti
    5
    Ringraziato 10 volte in 8 Posts
    Predefinito

    Perfetto!

    Mi hai fatto capire qual era la mia lacuna... le CLASSI ANONIME!
    Mai viste prima... ho letto qualcosa e ho capito!

    Grazie!

  12. #10
    Androidiano L'avatar di Supergiox


    Registrato dal
    Oct 2010
    Messaggi
    179

    Ringraziamenti
    5
    Ringraziato 10 volte in 8 Posts
    Predefinito

    Invece (non so se è il caso di aprire un altro post),
    vorrei capire perchè si utilizza la parola chiave "final" per la TextView, se proprio questa verrà modificata (fatto sta che il programma funziona!), e invece il button non è final...

    codice:
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class ProjectLayoutActivity extends Activity {
    	// COntatore
    	private int counter = 0;
    	
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		
    		// Otteniamo il riferimento al Button
    		Button pressButton = (Button) findViewById(R.id.pressButton);
    		
    		// Otteniamo il riferimento alla TextView
    		final TextView outputView = (TextView) findViewById(R.id.output);
    		
    		// Ascoltiamo l'evento di pressione associato al pulsante
    		pressButton.setOnClickListener(new OnClickListener() {
    
    			public void onClick(View v) {
    				outputView.setText("Click # " + counter++);
    			}
    
    		});
    
        }
    }
    E poi non so a cosa serve l'istruzione @override.
    La cosa grave è che non trovo risposta alle mie domande sui libri...

Pagina 1 di 3 123 ultimoultimo
Ultima pagina

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