2016-07-23 1 views
6

J'utilise Butterknife pour injecter une vue pour la barre d'outils. Mais la méthode getSupportActionBar(toolbar) jette une exception null pointeur et l'application s'est malheureusement arrêtée. Que peut-on faire pour résoudre ce problème? J'utilise Android 4.2. Donc, y a-t-il un problème d'utilisation de Butterknife avec Jellybean?getSupportActionBar (barre d'outils) déclenche une exception de pointeur nul en utilisant avec Butterknife pour la barre d'outils

MainActivity

public class MainActivity extends AppCompatActivity { 

    @BindView(R.id.tool_bar_demo) 
    Toolbar toolbar; 
    @BindDrawable(R.drawable.backspace) 
    Drawable backspace_btn; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ButterKnife.bind(this); 
     setSupportActionBar(toolbar); 
     toolbar.setTitle("ABC"); 
    } 
} 

activity_main

<android.support.v7.widget.Toolbar 
     android:layout_width="match_parent" 
     android:layout_height="58dp" 
     android:id="@+id/tool_bar_demo" 
     android:background="?attr/colorPrimary" 
     android:minHeight="?attr/actionBarSize" 
     android:titleTextColor="@color/colorAccent" 
     /> 

</RelativeLayout> 

gradle

minSdkVersion 15 
    targetSdkVersion 23 

    apply plugin: 'com.neenbedankt.android-apt' 
    compile 'com.android.support:design:23.4.0' 
    compile 'com.jakewharton:butterknife:8.0.1' 
    apt 'com.jakewharton:butterknife-compiler:8.0.1' 


    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 
+0

Pourquoi ne pas simplement trouver ViewById pour votre barre d'outils> – Eenvincible

+0

Je suis sûr que ce n'est pas lié à Jellybean. – Amir

+0

pouvez-vous mettre quelques journaux? – Amir

Répondre

1

Cela semble être un problème avec Butterknife.

De la question des principaux points collectés sont:

Couteau à beurre est juste sur le sucre findViewById, et c'est ce qui est défaut de trouver le point de vue. Comme je l'ai dit, assurez-vous que la disposition est dans main_activity ou assurez-vous de mettre une barre d'outils avec cet ID dans la disposition main_activity.

un autre commentaire dit: si je mets un identifiant à mon inclure comme ceci:

<include 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    layout="@layout/toolbar" 
    android:id="@+id/include4" /> 

qui ne fonctionne pas. Mais si je supprime le android:id="@+id/include4" cela fonctionne. À partir de la version 7.0.1, l'ajout d'un ID à l'inclusion entraîne l'impossibilité de trouver la vue.

Le lien vers la question:id issue of butterknife

1

En fait, il est pas lié à Butterknife ou Jellybean. C'est une exception courante qui se produit lorsque vous utilisez le thème ActionBar avec Toolbar. Et il est dit que vous ne pouvez pas utiliser ActionBar & Toolbar en même temps.

Comme je l'ai mentionné dans un commentaire, vous devez changer votre style à suivre:

<style name="YOUR_STYLE" parent="Theme.AppCompat.Light.NoActionBar"> 
.... other attrs here 
<item name="windowActionBar">false</item> 
</style> 

Voir this fil lié à résoudre votre problème.