2016-07-06 4 views
1

Я пытаюсь установить заголовок панели инструментов в Android, но приложение аварийно завершает работу (исключение нулевого указателя). Я попробовал много вопросов stackoverflow, но никто не работал для меня. Я использовал код нижеНазвание панели инструментов не меняется в Android

toolbar = (Toolbar) findViewById(R.id.toolBarDataProvider); 
setSupportActionBar(toolbar); 
getSupportActionBar().setTitle("Notice"); 

LogCat

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.app.ActionBar.setTitle(java.lang.CharSequence)' on a null object reference at com.akapoor.kiittimetabletest1.Notice.onCreate(Notice.java:31) 

XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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" 
android:orientation="vertical" 
tools:context="com.akapoor.kiittimetabletest1.Notice"> 

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

<LinearLayout 
    android:layout_margin="10dp" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:weightSum="10"> 

    <ScrollView 
     android:id="@+id/scrollView2" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="9"> 

     <TextView 
      android:id="@+id/tvServerText" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:textSize="25dp" 
      android:textColor="#000000" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" /> 
    </ScrollView> 

    <Button 
     android:id="@+id/bServer" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:text="Refresh" /> 
</LinearLayout> 

toolbar_data_provider.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/toolBarDataProvider" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="?attr/colorPrimary" 
android:fitsSystemWindows="true" 
android:minHeight="?attr/actionBarSize" 
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

</android.support.v7.widget.Toolbar> 
+0

Какого стиля вы используя в своем манифесте для этой деятельности? – Jay

+0

Расширяет ли ваш класс активности AppCompatActivity? –

+0

есть «эксклюзивные» методы 'setSupportActionBar' и' getSupportActionBar', используемые из 'AppCompatActivity' ... – snachmsm

ответ

0

так что вы не Toolbar ... может показать нам свой код для стиля или макета XML для этого Activity

редактирования: может быть, есть какой-то идентификатор overwritting, когда вы используете

<include 
    android:id="@+id/include" 

это ваш новый идентификатор для вашего Toolbar (первый взгляд включен в файлы). попробуйте использовать merge (обернуть весь Toolbar) или просто не установить новый идентификатор в включать больше

HERE

+0

Я отредактировал вопрос ... plz check – akkk

+0

проверено, отредактировано – snachmsm

0

Хотя setSupportActionBar вы передаете нулевой параметр. Таким образом вы панель инструментов есть null. Таким образом, мы можем сделать вывод о том, что findViewById не удается найти с id toolbarDataProvider. Я предлагаю вам проверить правильность вашего идентификатора. Или укажите информацию о вашем xml.

EDITED

Итак, как я сказал, что вы не имеете ID toolbarDataProvider. Когда вы используете тег include, вы импортируете представление, описанное в другом xml, но вы можете переопределить его атрибуты. В вашем случае вы переопределяете атрибут id от toolbarDataProvider до включают. Попробуйте изменить свой код, чтобы увидеть, если он работает правильно:

toolbar = (Toolbar) findViewById(R.id.include); 
setSupportActionBar(toolbar); 
getSupportActionBar().setTitle("Notice"); 
+0

Я отредактировал вопрос ... plz check – akkk

+0

@akkk отредактировал мой ответ –

0

На самом деле, вы не установили панель инструментов как SupportActionctionBar, потому что вы включили его.Для Acces включена раскладку вам нужно:

1) Получить включен макет:

View icludedLayout = findViewById(R.id.include); 

2) Получить панель инструментов из него:

View toolbar = findViewById(R.id.toolBarDataProvider); 

EDIT

Если у вас нет» t ошибочно, и ваш XML-файл tollbar назван как Toolbar.xml, вам нужно изменить тег include:

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

Вы должны установить имя XML-файла для layout атрибута (в вашем случае имя XML-файла Toolbar)

EDITED

Заменить это:

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

Со следующим кодом (В этом коде, Я установил идентификатор include тега toolBarDataProvider вместо include):

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

И файл Toolbar.XML должен содержать следующий код (атрибут toolbar идентификатора не требуется):

<?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:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="?attr/colorPrimary" 
android:fitsSystemWindows="true" 
android:minHeight="?attr/actionBarSize" 
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

</android.support.v7.widget.Toolbar> 
Смежные вопросы