2

enter image description hereСворачивание панели инструментов, tabLayout и ViewPager не работает должным образом после того, как свиток

Я пытаюсь создать подобный макет для экрана профилей пользователей в моем приложении. Вот что мне нужно: 1. Кнопка «Назад», «плюс» и «изображение» должна находиться на панели инструментов как в ручном, так и в расширенном состоянии. 2. Панель инструментов должна быть прозрачной в расширенном состоянии и изменять цвет содержимого при свертывании. 3. Подается (180) и Cooked (300) текст должен быть доступен для кликов и вести к другим действиям. 4. При свертывании tabLayout должен быть закреплен под панелью инструментов. 5. ViewPager, прикрепленный к вкладкам, должен работать нормально и содержит listview.

Вот моя попытка:

<?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> 

Проблема: При нажатии в любом месте на свертывание содержимого панели инструментов (внутри относительного расположения) в начале не вызывают никаких проблем, но как только я сделать некоторые прокрутки (свернув панель , прокручивание содержимого viewpager, изменение вкладок) и снова вернуться к сворачивающейся панели инструментов в расширенном состоянии и щелкнуть в любом месте, приложение выйдет из строя. Я получаю следующую ошибку:

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) 

В чем причина такого поведения и как это исправить.

ответ

0

Это проблема android support library.

видеть эту ссылку для подробностей CoordinatorLayout NullPointerException in onTouchEvent

По ссылке выше эта проблема была исправлена ​​в android support library version-23.0.1

Обновления андроид библиотеки поддержки, чтобы решить ошибку.

 Смежные вопросы

  • Нет связанных вопросов^_^