我正在尝试在Android中设置工具栏的标题,但应用程序崩溃(空指针异常)。我尝试了很多stackoverflow相同的问题,但似乎没有一个对我有用。我使用下面的代码
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 :(得分:0)
所以你没有 List<string> colour = new List<String>{ "Red", "Orange", "Blue" };
List<string> enumColors = Enum.GetNames(typeof(MyColours)).ToList();
foreach (string s in enumColors)
{
if (colour.Exists(e => e == s))
return true;
else
return false;
}
...也许会向我们展示你的Toolbar
编辑: 当你使用
时,可能会有一些id覆盖Activity
这是您<include
android:id="@+id/include"
的新ID(包含在分隔文件中的第一个视图)。尝试使用Toolbar
(换行整个merge
)或者只是不要在include
更多HERE
答案 1 :(得分:0)
虽然setSupportActionBar传递了null参数。因此,您工具栏 null 。通过这种方式,我们可以得出 findViewById 无法找到id为 toolbarDataProvider 的视图的结论。我建议你需要检查你身份证的有效性。或者提供有关xml的信息。
<强> EDITED 强>
所以,正如我所说,你没有id toolbarDataProvider 。当您使用include标签时导入其他xml中描述的视图,但您可以覆盖它的属性。在您的情况下,您将id属性从 toolbarDataProvider 覆盖为包含。尝试更改代码以查看其是否正常工作:
toolbar = (Toolbar) findViewById(R.id.include);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Notice");
答案 2 :(得分:0)
实际上,您没有将工具栏设置为SupportActionctionBar,因为您已将其包含在内。要访问包含的布局,您需要:
1)获得包含的布局:
View icludedLayout = findViewById(R.id.include);
2)从中获取工具栏:
View toolbar = findViewById(R.id.toolBarDataProvider);
修改强>
如果您没有误解,并且您的tollbar xml文件被命名为Toolbar.xml,则需要将include标记更改为:
<include
android:id="@+id/include"
layout="@layout/Toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
答案 3 :(得分:0)
您必须为
layout
属性设置xml文件名(在您的情况下,xml文件名为Toolbar
)
<强> EDITED 强>
替换它:
<include
android:id="@+id/include"
layout="@layout/toolbar_data_provider"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
使用以下代码(在此代码中,我将include
代码的ID设置为toolBarDataProvider
而不是include
):
<include
android:id="@+id/toolBarDataProvider"
layout="@layout/Toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Toolbar.XML
文件应包含以下代码(不需要toolbar
id属性):
<?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>
答案 4 :(得分:0)
这是一个非常晚的答案,但对于仍在此问题上寻求帮助的任何人...为您的工具栏分配ID include
。这对我有用,还请确保将样式的工具栏设置为NoActionBar。
toolbar = (Toolbar) findViewById(R.id.include);