2017-02-07 55 views
1

我正在做一个android项目,我正在将一个自定义工具栏添加到activity.But获取下面的错误。请帮助。 在StoryActivity.Java文件android.support.design.widget.CollapsingToolbarLayout.setTitle - 空对象引用

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_story); 

    CollapsingToolbarLayout collapsingToolbar = 
      (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); 
    collapsingToolbar.setTitle("Title"); 
} 

在Activity_story.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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" 
    xmlns:ads="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/content_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.kidsstorytime.StoryActivity" 
    tools:showIn="@layout/app_bar_content"> 

     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="150dp" 
      android:id="@+id/contentImageView" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" 
      android:scaleType="fitXY" 
      android:background="@color/colorAccent" /> 
</RelativeLayout> 

在app_bar_story.xml

<?xml version="1.0" encoding="utf-8"?> 
    <android.support.design.widget.CoordinatorLayout  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:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context="com.kidsstorytime.MainActivity"> 
<android.support.design.widget.AppBarLayout android:layout_width="match_parent" 
android:layout_height="wrap_content" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:fitsSystemWindows="true" 
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
xmlns:android="http://schemas.android.com/apk/res/android"> 
    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:expandedTitleMarginEnd="64dp" 
     app:expandedTitleMarginStart="48dp" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     app:layout_scrollFlags="scroll|enterAlways"></android.support.v7.widget.Toolbar> 

    </android.support.design.widget.CollapsingToolbarLayout> 
</android.support.design.widget.AppBarLayout> 

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

在AndroidManifest.xml

<activity 
     android:name=".StoryActivity" 
     android:label="@string/title_activity_story" 
     android:parentActivityName=".MainActivity" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 

logcat的错误:

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.kidsstorytime, PID: 5633 
       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kidsstorytime/com.kidsstorytime.StoryActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.CollapsingToolbarLayout.setTitle(java.lang.CharSequence)' on a null object reference 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 
        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6077) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.CollapsingToolbarLayout.setTitle(java.lang.CharSequence)' on a null object reference 
        at com.beeblebroxlabs.kidsstorytime.StoryActivity.onCreate(StoryActivity.java:30) 
        at android.app.Activity.performCreate(Activity.java:6662) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)  
        at android.app.ActivityThread.-wrap12(ActivityThread.java)  
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)  
        at android.os.Handler.dispatchMessage(Handler.java:102)  
        at android.os.Looper.loop(Looper.java:154)  
        at android.app.ActivityThread.main(ActivityThread.java:6077)  
        at java.lang.reflect.Method.invoke(Native Method)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)  
      android:value="com.kidsstorytime.MainActivity" /> 

回答

0

您在扁平化不同的文件

tools:showIn="@layout/app_bar_content"> 

使用本

tools:showIn="@layout/app_bar_story"> 

,并删除<include layout="@layout/activity_story" /> 从app_bar_story