Android:二进制XML“您必须提供layout_height属性。”

时间:2013-12-13 23:24:39

标签: java android xml

我有一个现有的Android应用程序,我正在尝试通过Urban Airship API添加Rich Push Notifications。启动活动后,我收到以下错误消息:

  

java.lang.RuntimeException:二进制XML文件行#20:您必须提供   layout_height属性。

堆栈跟踪没有提到哪个XML文件有问题,所以我有点卡住了。我查看了所有XML布局,并且都指定了layout_height属性。我当然是谷歌问题,我到达了这个:What causes "RuntimeException: Binary XML file line #20: You must supply a layout_height attribute." (ActionBarScherlock is suspected)?

以上与我的问题非常相似,但我似乎无法解决它。我一步一步地在调试模式下运行代码,但我仍然不理解如何修复它......

这是我的清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="edu.sandiego.futuretorero"
android:versionCode="100"
android:versionName="1.0.0.0" >

<uses-sdk
    android:minSdkVersion="15"
    android:targetSdkVersion="18" />

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:name="edu.sandiego.futuretorero.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="edu.sandiego.futuretorero.permission.C2D_MESSAGE" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission
    android:name="android.permission.ACCESS_FINE_LOCATION"
    android:required="false" />
<uses-permission
    android:name="android.permission.ACCESS_COARSE_LOCATION"
    android:required="false" />
<uses-permission
    android:name="android.permission.ACCESS_MOCK_LOCATION"
    android:required="false" />
<uses-permission
    android:name="android.permission.VIBRATE"
    android:required="false" />
<uses-permission
    android:name="android.permission.ACCESS_NETWORK_STATE"
    android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>

<permission
      android:name="com.ellucian.elluciango.permission.MAPS_RECEIVE"
      android:protectionLevel="signature"/>
<uses-permission android:name="com.ellucian.elluciango.permission.MAPS_RECEIVE"/>

<application
    android:name="com.ellucian.mobile.android.EllucianApplication"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.Ellucian" 
    android:allowBackup="false"
    android:supportsRtl="true" >
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="KEY"/>

    <provider
        android:name="com.ellucian.mobile.android.provider.EllucianProvider"
        android:authorities="edu.sandiego.futuretorero.contentprovider"
        android:exported="false" />

    <!-- OPTIONAL (for the inbox widget) -->
    <receiver android:name=".urbanairship.RichPushWidgetProvider">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>
        <!-- This specifies the widget provider info -->
        <meta-data android:name="android.appwidget.provider"
                android:resource="@xml/widgetinfo" />
    </receiver>

    <!-- The service serving the RemoteViews to the collection widget -->
    <service android:name=".urbanairship.RichPushWidgetService"
        android:permission="android.permission.BIND_REMOTEVIEWS"
        android:exported="false" />

<!-- ACTIVITIES -->

    <!-- Main and Configuration -->
    <activity
        android:name="com.ellucian.mobile.android.MainActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:label="@string/title_activity_main" >
        <intent-filter android:label="@string/app_name">
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name="edu.sandiego.futuretorero.urbanairship.InboxActivity" />
    <activity android:name="edu.sandiego.futuretorero.urbanairship.PushPreferencesActivity" />
    <activity android:name="edu.sandiego.futuretorero.urbanairship.MessageActivity" />

    <!-- REQUIRED for Urban Airship GCM-->
    <receiver android:name="com.urbanairship.CoreReceiver" />

    <receiver android:name="com.urbanairship.push.GCMPushReceiver" android:permission="com.google.android.c2dm.permission.SEND">        
      <intent-filter>
          <action android:name="com.google.android.c2dm.intent.RECEIVE" />
          <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

          <!-- MODIFICATION REQUIRED - Use your package name as the category -->
          <category android:name="edu.sandiego.futuretorero" />
      </intent-filter>
    </receiver>

    <!-- OPTIONAL, if you want to receive push, push opened and registration completed intents -->
    <!-- Replace the receiver below with your package and class name -->
    <receiver android:name="edu.sandiego.futuretorero.urbanairship.PushReceiver">
    </receiver>

    <!-- REQUIRED for Rich Push -->
    <service android:name="com.urbanairship.richpush.RichPushUpdateService"/>
    <service android:name="com.urbanairship.push.PushService" android:label="Push Notification Service"/>
    <service android:name="com.urbanairship.analytics.EventService" android:label="Event Service"/>

    <!-- This is required for persisting preferences related to push and location -->
    <provider android:name="com.urbanairship.UrbanAirshipProvider"
        android:authorities="edu.sandiego.futuretorero.urbanairship.provider"
        android:exported="false"
        android:multiprocess="true" />

    <!-- OPTIONAL (for segments support) -->
    <service android:name="com.urbanairship.location.LocationService" android:label="Segments Service"/>

    <receiver android:name="edu.sandiego.futuretorero.IntentReceiver" />

    <activity
        android:name="com.ellucian.mobile.android.schoolselector.ConfigurationLoadingActivity"
        android:label="@string/title_activity_configuration_loading"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:noHistory="true" >            
        <intent-filter android:label="@string/app_name">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" android:host="mobile.elluciancloud.com" android:pathPrefix="/mobilecloud/configuration" />
        </intent-filter> 
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.app.SendToSelectionReceiverActivity"
        android:noHistory="true" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.app.ConfigurationUpdateReceiverActivity"
        android:noHistory="true" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.app.OutdatedReceiverActivity"
        android:noHistory="true" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.schoolselector.SchoolSelectionActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:label="@string/title_activity_school_selection"
        android:noHistory="true" >
        <intent-filter android:label="@string/app_name">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" android:host="mobile.elluciancloud.com" android:pathPrefix="/mobilecloud/cloud" />
        </intent-filter>
    </activity>

    <!-- Default -->
    <activity
        android:name="com.ellucian.mobile.android.app.EllucianDefaultDetailActivity"
        android:label="@string/title_activity_default_detail" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>
    </activity>


    <!-- About -->
    <activity
        android:name="com.ellucian.mobile.android.about.AboutActivity"
        android:label="@string/title_activity_about" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>
    </activity>


    <!-- Courses -->
    <activity
        android:name="com.ellucian.mobile.android.courses.overview.CourseOverviewActivity"
        android:label="@string/title_activity_course_overview" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.courses.assignments.CourseAssignmentsActivity"
        android:label="@string/title_activity_course_assignments" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.courses.assignments.CourseAssignmentsDetailActivity"
        android:label="@string/title_activity_course_assignments_detail" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.courses.announcements.CourseAnnouncementsActivity"
        android:label="@string/title_activity_course_announcements" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.courses.announcements.CourseAnnouncementsDetailActivity"
        android:label="@string/title_activity_course_announcements_detail" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.courses.events.CourseEventsActivity"
        android:label="@string/title_activity_course_events" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.courses.events.CourseEventsDetailActivity"
        android:label="@string/title_activity_course_events_detail" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>


    <activity
        android:name="com.ellucian.mobile.android.courses.daily.CoursesDailyScheduleActivity"
        android:label="@string/title_activity_courses_daily_schedule" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.courses.full.CoursesFullScheduleActivity"
        android:label="@string/title_activity_courses_full_schedule" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <!-- Directory -->
    <activity
        android:name="com.ellucian.mobile.android.directory.DirectoryActivity"
        android:label="@string/title_activity_directory" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.directory.DirectoryListActivity"
        android:label="@string/title_activity_directory_list_all" 
        android:launchMode="singleTop" android:exported="false" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable_directory"/>
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.directory.DirectoryDetailActivity"
        android:label="@string/title_activity_directory_detail" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <!-- Events -->
    <activity
        android:name="com.ellucian.mobile.android.events.EventsActivity"
        android:label="@string/title_activity_events"
        android:configChanges="keyboard|keyboardHidden|screenSize"
        android:launchMode="singleTop" android:exported="false" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable_events"/>
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.events.EventsDetailActivity"
        android:label="@string/title_activity_events_detail" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>


    <!-- Grades -->
    <activity
        android:name="com.ellucian.mobile.android.grades.GradesActivity"
        android:label="@string/title_activity_grades" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>            
    </activity>


    <!-- Maps -->
    <activity
        android:name="com.ellucian.mobile.android.maps.MapsActivity"
        android:configChanges="orientation|keyboardHidden"
        android:label="@string/title_activity_maps" >
        <meta-data
            android:name="android.app.default_searchable"
            android:value="com.ellucian.mobile.android.maps.BuildingListActivity" />
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>            
    </activity>
    <activity
        android:name="com.ellucian.mobile.android.maps.LegalNoticesActivity"
        android:label="@string/title_activity_maps" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>
    </activity>

    <activity 
        android:name="com.ellucian.mobile.android.maps.BuildingDetailActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity 
        android:name="com.ellucian.mobile.android.maps.BuildingInfoDetailActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.maps.MapsSingleLocationActivity"
         >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>
    </activity>

    <activity
        android:label="@string/maps_building_list_label"
        android:name="com.ellucian.mobile.android.maps.BuildingListActivity"
        android:configChanges="orientation|keyboardHidden"
        android:launchMode="singleTop"
        android:exported="false" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable_buildings" />
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <!-- Multimedia -->

    <activity
        android:name="com.ellucian.mobile.android.multimedia.VideoActivity"
        android:label="@string/title_activity_video">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.multimedia.AudioActivity"
        android:label="@string/title_activity_audio">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <!-- News -->
    <activity
        android:name="com.ellucian.mobile.android.news.NewsActivity"
        android:label="@string/title_activity_news"
        android:configChanges="keyboard|keyboardHidden|screenSize"
        android:launchMode="singleTop" android:exported="false" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable_news"/>
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity
        android:name="com.ellucian.mobile.android.news.NewsDetailActivity"
        android:label="@string/title_activity_news_detail" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <!-- About -->
    <activity
        android:name="edu.sandiego.futuretorero.urbanairship.MessagesActivity"
        android:label="@string/title_activity_messages" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>
    </activity>

    <!-- Notifications -->
    <activity
        android:name="com.ellucian.mobile.android.notifications.NotificationsActivity"
        android:label="@string/title_activity_notifications" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <activity 
        android:name="com.ellucian.mobile.android.notifications.NotificationsDetailActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>


    <!-- Numbers -->
    <activity
        android:name="com.ellucian.mobile.android.numbers.NumberListActivity"
        android:label="@string/title_number_list" 
        android:configChanges="keyboard|keyboardHidden|screenSize"
        android:launchMode="singleTop" android:exported="false" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable_numbers"/>
        <meta-data
    android:name="android.support.PARENT_ACTIVITY"
    android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>
    <activity 
        android:name="com.ellucian.mobile.android.numbers.NumbersDetailActivity" 
        android:label="@string/title_number_detail" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>

    <!-- Webframe -->
    <activity
        android:name="com.ellucian.mobile.android.webframe.WebframeActivity"
        android:label="Webframe" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ellucian.mobile.android.MainActivity"/>  
    </activity>


<!-- SERVICES -->
    <service android:name="com.ellucian.mobile.android.client.services.AuthenticateUserIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.ConfigurationUpdateService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.CourseDetailsIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.CourseGradesIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.CourseRosterIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.CourseAssignmentsIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.CourseAnnouncementsIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.CourseEventsIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.CoursesFullScheduleIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.EventsIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.GradesIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.ImageLoaderService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.MapsIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.NewsIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.NotificationsIntentService" ></service>
    <service android:name="com.ellucian.mobile.android.client.services.NumbersIntentService" ></service>


</application>

我可以发布我的“活动”,“样式”和“布局”,但它超出了字符数限制。像上面的问题一样,我确信这是ActionBarSherlock的一个问题,但我不知道如何修复它。

编辑:添加完整堆栈跟踪:https://gist.github.com/RommelTJ/8246805

1 个答案:

答案 0 :(得分:2)

我也遇到了相同的问题,在支持多屏幕时,如果默认尺寸文件中的属性不可用,则会出现此问题

有关更多信息,我将附上屏幕截图

问题-

enter image description here

解决方案-

enter image description here