Modo corretto per implementare l'attributo onClick di Android XML in Attività

5

Ho utilizzato l'attributo Android: onClick estesamente nei miei layout XML per la mia applicazione Android.

Esempio:

<Button
    android:id="@+id/exampleButton"
    android:onClick="onButtonClick" />

È opportuno creare un'interfaccia per applicare l'implementazione di quei metodi onClick in Attività che utilizzano quel file di layout?

public interface MyButtonInterface {
    public onButtonClick(View v);
}
    
posta Austyn Mahoney 14.06.2012 - 23:06
fonte

2 risposte

3

Perché vuoi un'interfaccia? È necessario applicare in fase di compilazione che la classe di attività abbia i metodi definiti negli attributi onClick nell'XML?

Personalmente non mi preoccuperei.

  • Chi impone l'interfaccia ha i giusti metodi?
  • Chi impone l'interfaccia giusta viene utilizzata su ogni attività?

Accettalo solo per la natura flessibile dell'interazione tra le attività di Android e amp; layout, non è possibile applicare in fase di compilazione che la funzione onClick esista effettivamente. Per quanto ne so, comunque. Qualcuno mi prova che sbaglio?

    
risposta data 01.07.2012 - 18:11
fonte
-1
<?xml version="1.0" encoding="utf-8"?> 
<!-- layout elements -->
<Button android:id="@+id/mybutton"
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:text="Click me!"  
    android:onClick="myFancyMethod" />  
<!-- even more layout elements -->

Il codice sopra mostra l'implementazione XML. Ora sullo sfondo Android non fa altro che il codice Java che chiama il tuo metodo su un evento click.

Si noti che con l'XML sopra, Android cercherà il metodo onClick myFancyMethod () solo nel file .java dell'attività attiva corrente. È importante ricordare che se si utilizzano i frammenti, poiché anche se si aggiunge l'XML sopra utilizzando un frammento, Android non cercherà il metodo onClick nel file .java del frammento utilizzato per aggiungere l'XML.

protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dialog);
}

public void myFancyMethod(final View view) {
    System.out.println("clicked");
}
    
risposta data 01.07.2012 - 11:33
fonte

Leggi altre domande sui tag