Autore Topic: Gestione eventi  (Letto 1185 volte)

Offline Salvuzzo87

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
Gestione eventi
« il: 22 Agosto 2011, 00:20:29 CEST »
0
Ciao ragazzi !!!
Ho un piccolo problema che non ho ben capito attraverso delle guide. Ho una classe che estende Active e implementa OnClickListener :

Codice: [Seleziona]
        @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        // layoyt;
        LinearLayout layout = new LinearLayout(this);
       
        Button button = new Button(this);
        button.setText("Clicca");
        layout.addView(button);
        setContentView(layout);
    }

Ho semplicemente inserito un bottone, automaticamente è stato importato il metodo:

Codice: [Seleziona]
        @Override
        public void onClick(View v) {
                // TODO Auto-generated method stub
        }

tutto all'interno della stessa classe. Adesso come faccio ad associare l'onClick al bottone?...In più supponiamo che ho due bottoni, nel metodo onClick come faccio a specificare a quale bottone deve riferirsi?Grazie mille

Ciao
Salvo

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re:Gestione eventi
« Risposta #1 il: 22 Agosto 2011, 01:44:28 CEST »
0
Probabilmente stai facendo un po' di confusione. L'Activity che che hai creato NON DEVE implementare l'OnClickListener: l'evento click lo devi riferire ai pulsanti (o altre View in genere) non all'Activity che ne contiene il layout.

Detto questo, ad ogni Button che crei puoi associare un determinato Listener che possa gestirne l'evento click. Esempio:

Codice (Java): [Seleziona]
   Button button = new Button(this);
   button.setText("Clicca");
   button.setOnClickListener(new OnClickListener() {    
   
             public void onClick(View v) {
                metodoDaRichiamareAlClick();
             }

         });

Quanto sopra risponde anche alla tua seconda domanda. Cambiando un attimo discorso, in linea generale ti consiglio di preferire la creazione dichiarativa dei layout (con i files xml per intenderci) piuttosto che scrivere troppe righe di codice superflue.
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Gestione eventi
« Risposta #2 il: 22 Agosto 2011, 10:27:45 CEST »
0
tutto all'interno della stessa classe. Adesso come faccio ad associare l'onClick al bottone?...In più supponiamo che ho due bottoni, nel metodo onClick come faccio a specificare a quale bottone deve riferirsi?Grazie mille

Se la tua Activity implementa OnClickListener basta che fai button.setOnClickListener(this);
Io però per chiarezza rimango un supporter del metodo suggerito da gGx.

Offline Salvuzzo87

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
Re:Gestione eventi
« Risposta #3 il: 22 Agosto 2011, 23:45:38 CEST »
0
Se ho ben capito dovrei creare n classi per quanti sono gli onclick da gestione...Però facendo così, come faccio a catturare qualsiasi cosa che si riferisce ad una determinata View? Esempio, un oggetto Button.

Se la classe che contiene il bottone è la stessa classe che contiene il metodo onclick, basta dichiarare Button come variabile statica e nell'onclick posso far ciò che voglio, chiamare ogni singolo metodo disponibile per quell'oggetto. Se all'onClickListener invece di this gli passo una classe che implementa l'interfaccia OnClickListener, come faccio a giochicchiare sull'oggetto chiamante?
« Ultima modifica: 22 Agosto 2011, 23:48:42 CEST da Salvuzzo87 »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re: Gestione eventi
« Risposta #4 il: 23 Agosto 2011, 00:10:36 CEST »
0
Puoi chiamare senza problemi i metodi della classe "globale" e anche gli attributi, ammesso che siano dichiarati come final.

Sent from my HTC Desire