1

Howzit,

I have a static header that is being included in my layout that contains a listview. The functionality works great, however whenever I click on the job it throws a NullPointerException (I want nothing to happen)

Not to sure why this is happening.

Container.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:gravity="center"
  android:orientation="vertical" >

  <include android:id="@+id/headerItem"
           android:layout_alignParentTop="true"
           android:layout_width="fill_parent"
           android:layout_height="76dip"
           android:background="@color/standard_background"
           layout="@layout/List_Item"/>

  <ListView
      android:id="@id/android:list"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_below="@+id/headerItem"
      android:background="@color/standard_background" />
</RelativeLayout>

List_Item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="60dip"
  android:orientation="vertical"
  android:padding="8dp">
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="30dip"
    android:orientation="horizontal">

           ...a couple of textviews
    </LinearLayout>   
           ...a single textview
   </LinearLayout>

I have attempted to set it to disabled, not focusable as well as disabled the click and long click. Not sure what else to try.

Stacktrace

Exception in MessageQueue callback: handleReceiveCallback
 java.lang.NullPointerException
      at android.support.v4.widget.DrawerLayout.isContentView(DrawerLayout.java:840)
      at android.support.v4.widget.DrawerLayout.onInterceptTouchEvent(DrawerLayout.java:866)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1859)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
      at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
      at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
      at android.app.Activity.dispatchTouchEvent(Activity.java:2458)
      at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.dispatchTouchEvent(ActionBarActivityDelegateICS.java:255)
      at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016)
      at android.view.View.dispatchPointerEvent(View.java:7886)
      at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3954)
      at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3833)
      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
      at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525)
      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
      at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582)
      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
      at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5602)
      at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5582)
      at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5553)
      at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5682)
      at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
      at android.os.MessageQueue.nativePollOnce(Native Method)
      at android.os.MessageQueue.next(MessageQueue.java:138)
      at android.os.Looper.loop(Looper.java:123)
      at android.app.ActivityThread.main(ActivityThread.java:5017)
      at java.lang.reflect.Method.invokeNative(Native Method)
      at java.lang.reflect.Method.invoke(Method.java:515)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
      at dalvik.system.NativeStart.main(Native Method)
shutting down VM
d=1: thread exiting with uncaught exception (group=0x41889ba8)
FATAL EXCEPTION: main
rocess: co.za.fieldservice.tcm, PID: 21008
ava.lang.NullPointerException
      at android.support.v4.widget.DrawerLayout.isContentView(DrawerLayout.java:840)
      at android.support.v4.widget.DrawerLayout.onInterceptTouchEvent(DrawerLayout.java:866)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1859)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
      at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
      at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
      at android.app.Activity.dispatchTouchEvent(Activity.java:2458)
      at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.dispatchTouchEvent(ActionBarActivityDelegateICS.java:255)
      at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016)
      at android.view.View.dispatchPointerEvent(View.java:7886)
      at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3954)
      at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3833)
      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
      at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525)
      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
      at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582)
      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
      at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5602)
      at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5582)
      at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5553)
      at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5682)
      at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
      at android.os.MessageQueue.nativePollOnce(Native Method)
      at android.os.MessageQueue.next(MessageQueue.java:138)
      at android.os.Looper.loop(Looper.java:123)
      at android.app.ActivityThread.main(ActivityThread.java:5017)
      at java.lang.reflect.Method.invokeNative(Native Method)
      at java.lang.reflect.Method.invoke(Method.java:515)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
      at dalvik.system.NativeStart.main(Native Method)

DrawerLayout.xml

<FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
  <android.support.v4.widget.DrawerLayout
      android:id="@+id/drawer_layout"
      android:layout_width="match_parent"
      android:layout_height="match_parent" >
    <!-- The navigation drawer -->
    <LinearLayout
        android:id="@+id/drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_gravity="start" >

      <ListView android:id="@+id/drawer_list"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:choiceMode="multipleChoice"
          android:divider="@color/light_gray"
          android:dividerHeight="0.1dp"
          android:background="@color/standard_background"/>

    </LinearLayout>
  </android.support.v4.widget.DrawerLayout>
  <!-- The main content view -->
  <FrameLayout
      android:id="@+id/content_frame"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_marginLeft="@dimen/drawer_content_padding"
      />
</FrameLayout>
Johan
  • 8,068
  • 1
  • 33
  • 46

3 Answers3

3

The problem was in the drawer layout.

The drawers width was set to match_parent, thus making it overlay some other views and causing an exception to occur when pressing anywhere (anywhere in the whitespace).

When I changed the width to be the same value as the value of the left margin of my content_frame everything worked perfect.

Johan
  • 8,068
  • 1
  • 33
  • 46
0

You are assigning a new id in xml:

<include android:id="@+id/headerItem" // remove it 
           android:layout_alignParentTop="true"
           android:layout_width="fill_parent"
           android:layout_height="76dip"
           android:background="@color/standard_background"
           layout="@layout/List_Item"/>

then just find the layout by id in your activity like below.

layout = (RelativeLayout)view.findViewById(R.id.headerItem);

It should be fix NPE.

Jitesh Dalsaniya
  • 1,917
  • 3
  • 20
  • 36
0

match_parent does the trick but then it looses the essence of Drawer Layout. :(

The issue above was indeed because of the margins added to the Frame Layout which you are using for your Fragments. This is strange but true.

Try removing the margins and your layout will look as,

<FrameLayout
  android:id="@+id/content_frame"
  android:layout_width="match_parent"
  android:layout_height="match_parent"/>

Similar situation here.

Let know if this helps. :)

Community
  • 1
  • 1
Atul O Holic
  • 6,692
  • 4
  • 39
  • 74