Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1
    Ti ringrazio ancora una volta per la cortese disponibilità. Hai fatto chiarezza in molti miei dubbi ma mi sa che ho ancora un po' da studiare e da capire per cogliere appieno la questione della gestione degli eventi in particolar modo con riguardo ad Android. L'interesse per Java deriva dal fatto che vorrei sviluppare app nativamente con Android Studio senza più fare uso di framework cross-platform. Ad esempio quello che ancora mi è poco chiaro è il significato del seguente codice relativo al click su un pulsante:

    mTrueButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v){
    checkAnswer(true);
    updateQuestion();

    }
    });setOnClickListener è il metodo per registrarsi sul listener?
    il parametro View.OnClickListener dovrebbe essere un'interfaccia definita nella classe View che contempla il metodo onClick ma quand'è che passo un oggetto View come parametro di questo metodo onClick? Nello snippet sopra non si fa nessun riferimento all'oggetto di nome 'v' di tipo View come da parametro di onClick()

    Comunque... mi sta scoppiando la testa.
    Grazie per l'attenzione

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da filograndipad2 Visualizza il messaggio
    setOnClickListener è il metodo per registrarsi sul listener?
    Sì, esatto.

    Quote Originariamente inviata da filograndipad2 Visualizza il messaggio
    il parametro View.OnClickListener dovrebbe essere un'interfaccia definita nella classe View
    Non ho sottomano la documentazione di Android ma OnClickListener è sicuramente una interface. E nel caso specifico è una "nested" (innestata) interface della classe View.

    Quote Originariamente inviata da filograndipad2 Visualizza il messaggio
    ma quand'è che passo un oggetto View come parametro di questo metodo onClick?
    Quando vedi una forma del tipo

    new Tipo( ... ) { ..... }

    Questa è una "anonymous inner class", ovvero una classe anonima. E' anonima perché il nome non lo sai (non è nel sorgente che scrivi, lo sceglie il compilatore).
    Sostanzialmente è la definizione di una classe (vedi che c'è il blocco { } con metodi dentro) ma che è istanziata nello stesso punto in cui è definita.
    Una classe anonima può fare solo UNA di queste due cose: estendere una classe OPPURE implementare una interfaccia.
    Quindi in quel caso viene definita una classe anonima che implementa OnClickListener (e implicitamente estende Object).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,305
    ma quand'è che passo un oggetto View come parametro di questo metodo onClick?
    Non sei tu a passare l'oggetto View a quel metodo: sarà il sistema a passare l'oggetto quando verrà sollevato l'evento.
    Quando l'utente fa clic sul pulsante, il sistema chiamerà il metodo onClick() passandogli il riferimento al pulsante che è stato premuto. In questo modo la tua applicazione verrà "notificata" del clic e potrà agire di conseguenza.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.