2014-02-19 3 views
1

Howzit,NullPointerException при нажатии на включенной части макета

У меня есть статический заголовок, который включается в моем макете, который содержит ListView. Функциональность отлично работает, но всякий раз, когда я нажимаю на нее, она бросает исключение NullPointerException (я ничего не хочу)

Не знаю, почему это происходит.

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> 

Я попытался установить его на инвалидов, не Focusable, а также отключить щелчок и длинный щелчок. Не уверен, что еще попробовать.

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> 
+0

есть ли у вас трассировку стека вы можете поделиться с нами ? – SK9

+0

Удалите 'xmlns: android =" http://schemas.android.com/apk/res/android "из вашего второго' LinearLayout' в 'List_Item.xml' –

+0

@ SK9 stacktrace добавлен – Johan

ответ

3

Проблема была в макете выдвижного ящика.

Ширина выдвижных ящиков была установлена ​​в match_parent, что делает ее наложением некоторых других видов и вызывает исключение при нажатии в любом месте (в любом месте в пробеле).

Когда я изменил ширину на то же значение, что и значение левого поля моего content_frame, все работало идеально.

0

Вы присваиваете новый идентификатор в 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"/> 

то просто найти раскладку по идентификатору ваша деятельность ниже.

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

Должно быть исправлено NPE.

+0

Я удалил его, и теперь заголовок больше не включается. – Johan

+0

Я установил идентификатор в макете, в который я включаю, но то же самое происходит. – Johan

0

match_parent выполняет трюк, но затем он теряет суть компоновщика ящика. :(

вопрос выше был действительно из-за края добавлены в макете рамки, которые вы используете для ваших фрагментов. Это странно, но это правда.

Попробуйте удалить поля и макет будет выглядеть,

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

Аналогичная ситуация here.

Пусть знать, если это помогает. :)

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