2

enter image description here

I am trying to create a similar layout for User Profile screen in my app. Here is what I need: 1. The back, plus and image button should be in the toolbar in collapsed as well as expanded state. 2. The toolbar should be transparent in expanded state and change to color of content scrim on being collapsed. 3. Served(180) and Cooked(300) text should be clickable and lead to other activities. 4. On collapsing, the tabLayout should be pinned below toolbar. 5. ViewPager attached to tabs should work fine and it contains listview.

Here is my attempt:

<?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"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#231f20"
    android:fitsSystemWindows="true">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="?attr/actionBarSize"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:layout_gravity="bottom"
        android:background="#231f20"
        app:layout_anchor="@+id/appbar"
        app:layout_anchorGravity="bottom"
        app:tabGravity="fill"
        app:tabMode="fixed" />

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <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="#FAC80A"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:expandedTitleMarginStart="200dp"
            app:expandedTitleMarginBottom="110dp">


            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fitsSystemWindows="true"
                app:layout_collapseMode="parallax">

                // Contains the background image, profile pic,textview etc.

            </RelativeLayout>

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

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

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

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


</android.support.design.widget.CoordinatorLayout>

Problem : Clicking anywhere on Collapsing toolbar's contents(inside the relative layout) in the beginning does not cause any problem but as soon as I do some scrolling(collapsing the toolbar, scrolling viewpager contents, changing tabs) and again come back to collapsing toolbar in expanded state, and click anywhere on it, the app crashes. I am getting the following error:

09-21 07:28:38.740    5462-5462/com.galleri5.android E/InputEventReceiver﹕ Exception dispatching input event.
09-21 07:28:38.741    5462-5462/com.galleri5.android E/MessageQueue-JNI﹕ Exception in MessageQueue callback: handleReceiveCallback
09-21 07:28:38.744    5462-5462/com.galleri5.android E/MessageQueue-JNI﹕ java.lang.NullPointerException: Attempt to invoke virtual method 'float android.view.MotionEvent.getX()' on a null object reference
            at android.view.View.onTouchEvent(View.java:9321)
            at android.support.design.widget.CoordinatorLayout.onTouchEvent(CoordinatorLayout.java:449)
            at android.view.View.dispatchTouchEvent(View.java:8388)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2424)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2158)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2569)
            at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1743)
            at android.app.Activity.dispatchTouchEvent(Activity.java:2739)
            at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
            at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2530)
            at android.view.View.dispatchPointerEvent(View.java:8578)
            at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4028)
            at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3894)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3456)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3509)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3475)
            at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3585)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3483)
            at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3642)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3456)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3509)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3475)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3483)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3456)
            at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5708)
            at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5682)
            at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5653)
            at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5798)
            at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
            at android.os.MessageQueue.nativePollOnce(Native Method)
            at android.os.MessageQueue.next(MessageQueue.java:143)
            at android.os.Looper.loop(Looper.java:122)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            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:898)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
09-21 07:28:38.747    5462-5462/com.galleri5.android E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.galleri5.android, PID: 5462
    java.lang.NullPointerException: Attempt to invoke virtual method 'float android.view.MotionEvent.getX()' on a null object reference
            at android.view.View.onTouchEvent(View.java:9321)
            at android.support.design.widget.CoordinatorLayout.onTouchEvent(CoordinatorLayout.java:449)
            at android.view.View.dispatchTouchEvent(View.java:8388)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2424)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2158)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2119)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2569)
            at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1743)
            at android.app.Activity.dispatchTouchEvent(Activity.java:2739)
            at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
            at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2530)
            at android.view.View.dispatchPointerEvent(View.java:8578)
            at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4028)
            at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3894)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3456)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3509)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3475)
            at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3585)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3483)
            at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3642)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3456)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3509)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3475)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3483)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3456)
            at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5708)
            at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5682)
            at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5653)
            at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5798)
            at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
            at android.os.MessageQueue.nativePollOnce(Native Method)
            at android.os.MessageQueue.next(MessageQueue.java:143)
            at android.os.Looper.loop(Looper.java:122)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            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:898)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)

What is the reason of this behavior and how do I rectify this.

Movin Jain
  • 777
  • 1
  • 6
  • 15

1 Answers1

0

This was an issue of android support library.

see this link for details CoordinatorLayout NullPointerException in onTouchEvent

According to above link this issue has been fixed in android support library version-23.0.1

Update your android support library to solve error.

Priyank Patel
  • 11,271
  • 8
  • 59
  • 79