NullPointerException с android.support.v7.widget.Toolbar

В настоящее время я пытаюсь реализовать ящик для навигации в своем приложении. У меня проблема с панелью инструментов, которая равна null. Я сделал много поисков в Интернете и попробовал много разных решений. Я не закончил писать весь код, но я не могу запустить мое приложение, чтобы проверить ящик навигации. Может ли кто-нибудь увидеть, где я ошибся?

Если есть что-то еще, что мне нужно опубликовать, дайте мне знать.

Я включил его во все экраны активности

<include android:id="@+id/app_bar" layout="@layout/app_bar"/> 

app_bar.xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" > </android.support.v7.widget.Toolbar> 

Строка 72 MainActivity

 setSupportActionBar(mToolbar); 

Основная деятельность

 public class Trans_List extends ActionBarActivity { private Toolbar mToolbar; private CharSequence mTitle; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_trans_list); mToolbar = (Toolbar) findViewById(R.id.app_bar); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayShowHomeEnabled(true); NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.left_drawer); drawerFragment.setUp((DrawerLayout) findViewById(R.id.drawer_layout), mToolbar); 

Style.xml

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar" > <item name="windowActionBar">false</item> </style> <style name="Theme.split" parent="AppBaseTheme"> </style> <style name="dialog_custom" parent="@style/Theme.AppCompat.Dialog"> <item name="@android:listPreferredItemPaddingLeft">20dip</item> <item name="@android:listPreferredItemPaddingRight">20dip</item> <item name="@android:listPreferredItemPaddingStart">20dip</item> <item name="@android:listPreferredItemPaddingEnd">20dip</item> </style> </resources> 

LogCat

 01-07 01:14:29.702 4811-4811/com.lee.yuchan.splt E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.lee.yuchan.splt, PID: 4811 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lee.yuchan.splt/com.lee.yuchan.splt.Trans_List}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()' on a null object reference at android.support.v7.internal.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:95) at android.support.v7.internal.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:88) at android.support.v7.internal.app.ToolbarActionBar.<init>(ToolbarActionBar.java:84) at android.support.v7.app.ActionBarActivityDelegateBase.setSupportActionBar(ActionBarActivityDelegateBase.java:175) at android.support.v7.app.ActionBarActivity.setSupportActionBar(ActionBarActivity.java:92) at com.lee.yuchan.splt.Trans_List.onCreate(Trans_List.java:72) at android.app.Activity.performCreate(Activity.java:5933) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)            at android.app.ActivityThread.access$800(ActivityThread.java:144)            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)            at android.os.Handler.dispatchMessage(Handler.java:102)            at android.os.Looper.loop(Looper.java:135)            at android.app.ActivityThread.main(ActivityThread.java:5221)            at java.lang.reflect.Method.invoke(Native Method)            at java.lang.reflect.Method.invoke(Method.java:372)            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

Основная деятельность XML

  <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/app_bar"/> <TextView android:id="@+id/selectItems" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/select_instr1" android:textSize="20sp" android:gravity="center" android:paddingTop="4sp" android:paddingBottom="10sp" > </TextView> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" > </ListView> <Button android:id="@+id/buttonChecked" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="0dip" android:background="@drawable/custom_button" android:textColor="#ffffff" android:text="@string/next_button" /> </LinearLayout> <!-- The navigation drawer --> <fragment android:id="@+id/left_drawer" android:layout_width="@dimen/nav_dr" android:layout_height="match_parent" android:layout_gravity="start" app:layout="@layout/fragment_navigation_drawer" android:name="com.lee.yuchan.splt.NavigationDrawerFragment" tools:layout="@layout/fragment_navigation_drawer" /> </android.support.v4.widget.DrawerLayout> 

Solutions Collecting From Web of "NullPointerException с android.support.v7.widget.Toolbar"

Установите атрибут id на Toolbar xml следующим образом:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/app_bar" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" > </android.support.v7.widget.Toolbar> 

Затем удалите его из блока include чтобы он выглядел так:

 <include layout="@layout/app_bar"/> 

И чтобы упростить дальше, вы можете просто полностью удалить блок include и просто вставить Toolbar непосредственно в xml, где был include .

 <include android:id="@+id/toolbar" layout="@layout/tool_bar"/> 

Android.support.v7.widget.Toolbar.getTitle () для ссылки на нулевой объект происходит из-за конфликтов заголовков между идентификаторами и идентификатором id в определении toolbar.xml. Чтобы преодолеть эту проблему, удалите идентификатор, как показано ниже, и последний дизайн материала Lollipop отлично работает с панелью инструментов

 <include layout="@layout/tool_bar"/> 

Я решил проблему с помощью панели инструментов. Я понял после нескольких часов поиска в Интернете и пробовал разные вещи, я понял, что мой код не был неправильным, он использовал макеты из макета-21, а не папку макета с момента эмуляции для Android 5.0. Все изменения, которые я сделал, были в папке макета. Я внес изменения в xml-файлы в папке layout-21, и проблема была решена. Извините за потраченное впустую время и сообщение.

Когда у меня возникла эта проблема, я настроил макет активности и панели инструментов с тем же идентификатором

Я был поражен той же проблемой, и ни один из ответов не работал для меня, я действительно забыл включить в эту панель макет панели инструментов.

 <include layout="@layout/toolbar"/> 

В моем собственном случае я использовал

 @Bind(R.id.toolbar) protected Toolbar toolbar; 

В верхней части моего кода, но забыл сделать

 ButterKnife.bind(this); 

Внутри onCreate()

Я надеюсь, что это поможет кому-то

Не забудьте добавить

  compile 'com.jakewharton:butterknife:7.0.1' 

К вашим зависимостям build.gradle и импорту

 import butterknife.Bind; import butterknife.ButterKnife; 

В вашем Java-коде и перестроить ваше приложение.

У меня возникла проблема с панелью инструментов, которая не поддерживалась. support.v7 Я имею в виду, что вы должны добавить android.support.v7.widget. Перед литой вы понимаете, когда находите Toolbar с идентификатором …

В моем случае я пытался получить доступ к Toolbar внутри onAttach() фрагмента, а не onActivityCreated() , в результате чего NullPointerException .

Ответ немного поздний, но я просто столкнулся с этой проблемой.

У меня была аналогичная проблема, и я потратил на нее 7 часов. Он работал над 3 из 4-х видов деятельности просто отлично, но один мог бы потерпеть крах.

Единственное, что сработало для меня, и я не уверен, зачем было:

  mToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayShowHomeEnabled(true); 

Как последний код в моей onCreate. Теперь он отлично работает.

Проверьте, чтобы оба вызова были в порядке или нет

  setContentView(R.layout.layout_file) toolbar = (Toolbar) findViewById(R.id.toolbar_top) 

Другой возможной причиной является неправильный макет в setContentView(R.layout.yourLayout)

Я прочитал еще раз ваш код … и я увидел, что вы не определили идентификатор вашей панели инструментов в своем MainActivity XML … см. Ваш включить в него:

 <include layout="@layout/app_bar" /> <!-- But where's ID attribute here ? --> <!-- add android:id="@+id/app_bar" --> <!-- to finally have below : --> <include layout="@layout/app_bar" android:id="@+id/app_bar" /> 

После этого … вы не получите эту ошибку, потому что ваша панель инструментов окончательно найдена и не установлена ​​в «null».