2015-01-03 20 views
5

@OnClick non funziona in attuazione della butterknife Biblioteca@OnClick non sta funzionando in attuazione della butterknife Biblioteca

Quando clicco sul Button, non accade nulla.

Questo è il mio codice completo:

public class MainActivity extends ActionBarActivity { 
    @InjectView(R.id.edit_user) 
    EditText username; 
    @InjectView(R.id.edit_pass) 
    EditText password; 

    @OnClick(R.id.btn) 
    void submit() { 
     // TODO call server... 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ButterKnife.inject(this); 
     // TODO Use "injected" views... 
    } 
} 

Questo è il mio xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<EditText 
    android:id="@+id/edit_user" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:hint="user" /> 

<EditText 
    android:id="@+id/edit_pass" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:hint="user" /> 

<Button 
    android:id="@+id/btn" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Button" /> 

Grazie

+4

hai chiamato 'ButterKnife.inject (questo, vista);' o 'ButterKnife.inject (this);'? –

+1

ButterKnife.inject (questo); – Illusion

+0

@shayanpourvatan deve cambiare ButterKnife.inject (this) in ButterKnife.inject (this, view) ?? – Illusion

risposta

10

Come accennato nella documentazione butterknife, se si utilizza Eclipse, sarà necessario configure l'IDE prima che le annotazioni saranno trattati

3

Nella vostra attività di provare ad aggiungere ..

ButterKnife.inject(this); 

controllo di questo codice

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
ButterKnife.inject(this); 
} 

@OnClick(R.id.buttonAlert) 
public void alertClicked(View v){ 
new AlertDialog.Builder(v.getContext()) 
    .setMessage(getFormattedMessge()) 
    .setNeutralButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
     dialog.dismiss(); 
     } 
    }) 
    .show(); 
} 
+13

. L'iniettato è stato modificato. Trovate nelle ultime librerie – deepwinter

0

Utilizzando Coltello da burro è possibile associare la vostra ti piace questa anche ...

class ExampleActivity extends Activity { 

    @Bind(R.id.title) 
    TextView title; 
    @Bind(R.id.subtitle) 
    TextView subtitle; 
    @Bind(R.id.footer) 
    TextView footer; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.simple_activity); 
     ButterKnife.bind(this); 
     // TODO Use fields... 
    } 
} 

per maggiori dettagli si può vedere questo link http://jakewharton.github.io/butterknife/

11

Per chiunque abbia a che fare con questo problema in Android Studio, assicurati di includere sia le dipendenze necessarie che il plugin apt nei rispettivi file di build (controlla il file Leggimi di Butterknife). Mi sono precipitato attraverso i documenti e incluso solo la dipendenza di compilazione, che ha causato l'associazione a fallire in silenzio.

+0

potete dare un'occhiata a questo link per maggiori dettagli: https: //www.sitepoint.com/tidying-code-with-android-butterknife/ – Arthur

3

Doppio controllo di tutte le dipendenze nel progetto. Ecco le istruzioni per il download dal file Leggimi. Configurare il build.gradle a livello di progetto per includere il 'Android-apt' plugin:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 
    } 
} 

Quindi, applicare il plugin 'Android-apt' nel vostro build.gradle a livello di modulo e aggiungere le dipendenze coltello per il burro :

apply plugin: 'android-apt' 

android { 
    ... 
} 

dependencies { 
    compile 'com.jakewharton:butterknife:8.2.1' 
    apt 'com.jakewharton:butterknife-compiler:8.2.1' 
} 

Nota: Se si utilizza il nuovo compilatore Jack con la versione 2.2.0 o più recente non è necessario il plugin 'Android-apt' e può invece sostituire apt con annotationProcessor quando si dichiara la dipendenza compilatore.

2

Utilizzare ButterKnife.bind(this); in onCreate() di un'attività. o onCreateView per Fragment.

@OnClick(R.id.button_stop_sticky) 
    public void onStopClicked(View v) { 

     Toast.makeText(this, "onStop Clicked", Toast.LENGTH_LONG).show(); 

    } 

E ovviamente, app modulo> Gradle aggiungere dipendenza

compile 'com.jakewharton:butterknife:8.8.1' 
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' 
Problemi correlati