0

I'm developing an android application using Action Bar template. Everything is OK, but when I double click to any EditText field, application gets a Runtime Error, and it crashes. When I just click once, nothing happens and everything is OK. Here's the layout (fragment)

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:gravity="center"
    tools:ignore="UselessParent" >

    <RelativeLayout 
        android:id="@+id/addrun_layout_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true">
        <TextView
            android:id="@+id/textView1"
            android:layout_width="150dp"
            android:layout_height="40dp"
            android:background="#B0B0B0"
            android:gravity="center"
            android:text="@string/date"
            android:textSize="22sp" />

        <EditText
            android:id="@+id/date"
            android:layout_width="120dp"
            android:layout_height="40dp"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/textView1"
            android:background="#B0B0B0"
            android:ems="10"
            android:inputType="date"
            android:gravity="center"
            android:textSize="22sp" >
        </EditText>
    </RelativeLayout>
    <GridLayout
        android:id="@+id/gridLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/addrun_layout_date"
        android:layout_marginTop="20dp"
        android:columnCount="2" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="150dp"
            android:layout_height="50dp"
            android:layout_marginBottom="10dp"
            android:background="#838383"
            android:gravity="center"
            android:text="@string/distance"
            android:textColor="#FFFFFF"
            android:textSize="24sp" />

        <EditText
            android:id="@+id/distance"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:layout_marginLeft="20dp"
            android:gravity="center"
            android:background="#FFFFFF"
            android:inputType="numberDecimal"
            android:selectAllOnFocus="true"
            android:clickable="false"
            android:textSize="24sp" />

        <TextView
            android:id="@+id/textView3"
            android:layout_width="150dp"
            android:layout_height="50dp"
            android:layout_marginBottom="10dp"
            android:background="#838383"
            android:gravity="center"
            android:text="@string/time"
            android:textColor="#FFFFFF"
            android:textSize="24sp" />

        <EditText
            android:id="@+id/time"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:layout_marginLeft="20dp"
            android:gravity="center"
            android:background="#FFFFFF"
            android:inputType="numberDecimal"
            android:selectAllOnFocus="true"
            android:textSize="24sp" />

        <TextView
            android:id="@+id/textView4"
            android:layout_width="150dp"
            android:layout_height="50dp"
             android:gravity="center"
            android:layout_marginBottom="30dp"
            android:background="#838383"
            android:text="@string/calories"
            android:textColor="#FFFFFF"
            android:textSize="22sp" />

        <EditText
            android:id="@+id/caloris"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:layout_marginLeft="20dp"
            android:gravity="center"
            android:background="#FFFFFF"
            android:inputType="number"
            android:selectAllOnFocus="true"
            android:textSize="24sp" />

        <Button
            android:id="@+id/addButton"
            android:layout_width="100dp"
            android:layout_height="35dp"
            android:layout_gravity="center"
            android:background="#A71926"
            android:text="@string/add"
            android:textColor="#FFFFFF" />

        <Button
            android:id="@+id/clearButton"
            android:layout_width="100dp"
            android:layout_height="35dp"
            android:layout_gravity="center"
            android:background="#A71926"
            android:onClick="clear"
            android:text="@string/clear"
            android:textColor="#FFFFFF" />
    </GridLayout>

</RelativeLayout>

I can touch the field, change its value, no problems, just when I double click on it, the application crashes leaving this error message on the log :

> 12-14 05:41:51.496: E/AndroidRuntime(1681): FATAL EXCEPTION: main
12-14 05:41:51.496: E/AndroidRuntime(1681): Process: prv.adt.ejree, PID: 1681
12-14 05:41:51.496: E/AndroidRuntime(1681): android.view.InflateException: Binary XML file line #17: Error inflating class com.android.internal.view.menu.ActionMenuItemView
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.LayoutInflater.createView(LayoutInflater.java:620)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.view.menu.BaseMenuPresenter.createItemView(BaseMenuPresenter.java:157)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.view.menu.BaseMenuPresenter.getItemView(BaseMenuPresenter.java:176)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.view.menu.ActionMenuPresenter.getItemView(ActionMenuPresenter.java:163)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.view.menu.ActionMenuPresenter.flagActionItems(ActionMenuPresenter.java:438)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.view.menu.MenuBuilder.flagActionItems(MenuBuilder.java:1052)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.view.menu.BaseMenuPresenter.updateMenuView(BaseMenuPresenter.java:87)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.view.menu.ActionMenuPresenter.updateMenuView(ActionMenuPresenter.java:216)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.view.menu.BaseMenuPresenter.getMenuView(BaseMenuPresenter.java:72)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.view.menu.ActionMenuPresenter.getMenuView(ActionMenuPresenter.java:154)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.widget.ActionBarContextView.initForMode(ActionBarContextView.java:230)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.app.ActionBarImpl.startActionMode(ActionBarImpl.java:455)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.app.Activity.onWindowStartingActionMode(Activity.java:5005)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.policy.impl.PhoneWindow$DecorView.startActionMode(PhoneWindow.java:2375)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.policy.impl.PhoneWindow$DecorView.startActionModeForChild(PhoneWindow.java:2362)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:665)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:665)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:665)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:665)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:665)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:665)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.View.startActionMode(View.java:4536)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.widget.Editor.startSelectionActionMode(Editor.java:1551)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.widget.Editor$SelectionModifierCursorController.onTouchEvent(Editor.java:3656)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.widget.Editor.onTouchEvent(Editor.java:1036)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.widget.TextView.onTouchEvent(TextView.java:7691)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.View.dispatchTouchEvent(View.java:7706)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.app.Activity.dispatchTouchEvent(Activity.java:2458)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.View.dispatchPointerEvent(View.java:7886)
12-14 05:41:51.496: E/AndroidRuntime(1681):     at android.view.ViewRootImpl$Vie

Any explanation?

Siva
  • 9,043
  • 12
  • 40
  • 63
Iori Yagami
  • 387
  • 1
  • 3
  • 18
  • your problem is in xml file line 17, what's that line corresponding to ? – Muhammed Refaat Dec 14 '14 at 11:16
  • A layout_widht of some TextView. I think I have found the problem, but still have no explanation : Above, in the same XML, I have a EditText with date as InputType. When I make it enabled="false", that error disappear (Also the value shown on the field). Is that a problem related to Date type ? – Iori Yagami Dec 14 '14 at 11:25
  • I don't think so, the input type doesn't cause it to crash, can you please post the full xml layout that causes the error? – Muhammed Refaat Dec 14 '14 at 11:34
  • That's the whole code, I'm sorry I'm a beginner so I'm used to best practices yet. The problem is still appearing. in the main XML there's no 17 lines :/ – Iori Yagami Dec 14 '14 at 12:01

1 Answers1

0

Your problem is NOT in your xml layout, but it's because of android ActionMenuItemView xml layout, it can't deal with your customization that you applied to it through your Java code, So you made some mistake while inflating an actionbar menu item, look here to have an idea about what you forgot or what you missed.

Community
  • 1
  • 1
Muhammed Refaat
  • 8,914
  • 14
  • 83
  • 118
  • But what is the relation between the ActionMenuItemView and the EditText elements in the layout? I mean, the error is generated only when I double click on an EditText field. – Iori Yagami Dec 14 '14 at 12:16
  • Here's how I put the action bar menu : `code`// Set up the action bar to show a dropdown list. final ActionBar actionBar = getActionBar(); actionBar.setDisplayShowTitleEnabled(false); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); // Set up the dropdown list navigation in the action bar. actionBar.setListNavigationCallbacks( // Specify a SpinnerAdapter to populate the dropdown list. new ArrayAdapter(actionBar.getThemedContext(), android.R.layout.simple_list_item_1, android.R.id.text1, getFunctions()), this);`code` – Iori Yagami Dec 14 '14 at 12:17
  • may be when you double click the `EditText` field the fragment sense a duplicate id, one for each click, and that causes the ActionMenuItemView to crash, try to remove the fragment layout id if you assign one, and try to test your app without the action bar menu code and you will see it will work. – Muhammed Refaat Dec 14 '14 at 12:36
  • may be when you double click the `EditText` field the fragment sense a duplicate id, one for each click, and that causes the ActionMenuItemView to crash, try to remove the fragment layout id if you assign one, and try to test your app without the action bar menu code and you will see it will work. – Muhammed Refaat Dec 14 '14 at 12:36
  • another thing, I think your problem will be solved if you set `onTouchListener` for your `EditText` and make it not doing something, just an empty `onTouchListener` action – Muhammed Refaat Dec 14 '14 at 12:37
  • 1
    Yes you are right, it's because I changer the Action Bar style, I wanted to make a custom theme. Some of its code was the source of the error ! Thank you ! – Iori Yagami Dec 14 '14 at 12:40
  • I tried the onTouchListener already and it couldn't help. The problem was with styling the actionbar, I was adding some properties that - I think - don't exist! – Iori Yagami Dec 14 '14 at 12:47