2016-07-23 13 views
6

Ich benutze Butterknife, um Ansicht für die Symbolleiste zu injizieren. Aber die Methode getSupportActionBar(toolbar) löst Nullzeigerausnahme und die App wurde leider gestoppt. Was kann getan werden, um dieses Problem zu lösen? Ich benutze Android 4.2. Also, gibt es ein Problem mit Butterknife mit Jellybean?getSupportActionBar (Symbolleiste) löst Nullzeigerausnahme mit Butterknife für Symbolleiste

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

Warum nicht einfach ViewById für Ihre Toolbar finden> – Eenvincible

+0

Ich bin mir sicher, dass es nicht mit Jellybean zu tun hat. – Amir

+0

können Sie einige Protokolle? – Amir

Antwort

1

Dies scheint ein Problem mit Butterknife zu sein.

Von der Ausgabe der wichtigsten Punkte gesammelt sind:

Buttermesser auf findViewById nur Zucker ist, und das ist, was die Ansicht finden versagt. Wie bereits gesagt, stelle sicher, dass das Layout in main_activity ist oder stelle sicher, dass du eine Toolbar mit dieser ID im main_activity-Layout platzierst.

ein weiterer Kommentar sagt: wenn ich eine ID auf meine wie folgt sind:

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

Das funktioniert nicht. Aber wenn ich die android:id="@+id/include4" entferne es funktioniert. Ab Version 7.0.1 führt das Hinzufügen einer ID zum Include dazu, dass die Ansicht nicht gefunden wird.

Der Link zum Thema:id issue of butterknife

1

In der Tat ist es nicht zu Butterknife oder Jellybean bezogen. Es ist eine häufige Ausnahme, die auftritt, wenn Sie ActionBar-Design mit Toolbar verwenden. Und es heißt, Sie können ActionBar & Toolbar nicht gleichzeitig verwenden.

Wie ich in Kommentar erwähnen, sollten Sie Ihren Stil zu folgenden ändern:

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

Siehe this Zusammenhang Thread Ihr Problem zu lösen.

Verwandte Themen