2016-07-23 12 views
6

Używam Butterknife do wstrzykiwania widoku dla paska narzędzi. Ale metoda getSupportActionBar(toolbar) generuje wyjątek wskaźnika pustego, a aplikacja niestety się zatrzymała. Co można zrobić, aby rozwiązać ten problem? Używam Androida 4.2. Czy istnieje jakiś problem z używaniem Butterknife with Jellybean?getSupportActionBar (pasek narzędzi) zgłasza wyjątek wskaźnika pustego przy użyciu Butterknife dla paska narzędzi

główną działalność

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

Dlaczego nie tylko findViewById dla paska narzędzi Toolbar> – Eenvincible

+0

Jestem pewien, że nie ma związku z Jellybean. – Amir

+0

Czy umieścisz kilka logów? – Amir

Odpowiedz

1

To wydaje się być problem z Butterknife.

z emisji główne punkty gromadzone są:

Butter Knife jest tylko cukier na findViewById, i to, co nie udaje się znaleźć widoku. Jak już wspomniałem, upewnij się, że układ jest w main_activity lub upewnij się, że umieścisz pasek narzędzi z tym identyfikatorem w układzie main_activity.

kolejny komentarz mówi: Jeżeli ustawić identyfikator do mojego to tak:

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

To nie działa. Ale jeśli usuniemy android:id="@+id/include4", to działa. Od wersji 7.0.1 dodanie identyfikatora do włącznika powoduje, że widok nie zostanie znaleziony.

Link do tej kwestii:id issue of butterknife

1

W rzeczywistości nie jest to związane z Butterknife lub Jellybean. Jest to typowy wyjątek, który występuje, gdy używasz motywu ActionBar z Toolbar. Mówi się, że nie można jednocześnie używać ActionBar & .

Jak wspomina w komentarzu powinny zmienić swój styl do następujących:

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

Zobacz this związane wątek, aby rozwiązać swój problem.

Powiązane problemy