【问题标题】:The <activity> element must be a direct child of the <application> element<activity> 元素必须是 <application> 元素的直接子元素
【发布时间】:2013-05-04 07:05:30
【问题描述】:

我只是想启动我的应用程序,但它总是失败并给我这个错误。以前,它只会安装 .apk 文件,但现在它根本无法启动。我刚刚开始学习 Android 开发教程。

<?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.myfirstapp"
        android:versionCode="1"
        android:versionName="1.0" >

        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />

        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.myfirstapp.MainActivity"
                android:label="@string/app_name" >
                <activity
                    android:name="com.example.myfirstapp.DisplayMessageActivity"
                    android:label="@string/title_activity_display_message"
                    android:parentActivityName="com.example.myfirstapp.MainActivity" >
                    <meta-data
                        android:name="android.support.PARENT_ACTIVITY"
                        android:value="com.example.myfirstapp.MainActivity" >
                        <intent-filter>
                            <action android:name="android.intent.action.MAIN" />
                            <category android:name="android.intent.category.LAUNCHER" />
                        </intent-filter>
                    </meta-data>
                </activity>
            </activity>
        </application>

    </manifest>

【问题讨论】:

    标签: android xml eclipse android-activity metadata


    【解决方案1】:

    您的清单中不能有嵌套的活动标签,解决这个问题,它应该可以工作。

    【讨论】:

    • 现在它告诉我,“未找到启动器活动!”。
    • 您需要在intent-filter 中指定一个活动作为您的启动器活动。关注link
    【解决方案2】:

    是 - 例如:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example" android:versionCode="1" android:versionName="1.0">
      <uses-sdk android:minSdkVersion="3" />
    
      <uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>
      <uses-permission android:name="android.permission.VIBRATE"></uses-permission>
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
      <uses-permission android:name="android.permission.CAMERA" />
      <uses-permission android:name="android.permission.WAKE_LOCK" />
    
      <uses-feature android:name="android.hardware.camera" /> 
    
      <application 
          android:icon="@drawable/icon" android:label="@string/app_name">
    
        <!-- Boot window -->
        <activity 
            android:name=".ServicesDemo" android:label="@string/app_name">        
          <intent-filter>
            <action android:name="android.intent.action.MAIN" />           
            <category android:name="android.intent.category.HOME" />     
            <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
    
        </activity>
    
        <!-- Second window -->
        <activity android:name=".MainActivity" android:label="@string/app_name" 
            android:parentActivityName=".ServicesDemo" />       
        <!-- Second window -->
        <activity android:name=".MyWall" android:label="@string/app_name" 
            android:parentActivityName=".ServicesDemo" />    
        <!-- Second window -->
        <activity android:name=".MyRotations" android:label="@string/app_name" 
            android:parentActivityName=".ServicesDemo" />
        <!-- Second window -->
        <activity android:name=".MySetting" android:label="@string/app_name" 
            android:parentActivityName=".ServicesDemo" />
    
        <receiver 
            android:enabled="true"
            android:name=".IntentReceiver"
            android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
            >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.USER_PRESENT" />            
                <action android:name="android.intent.action.HEADSET_PLUG" />
                <action android:name="android.intent.action.SCREEN_ON" />
                <action android:name="android.intent.action.SCREEN_OFF" />            
                <category android:name="android.intent.category.DEFAULT" />            
            </intent-filter>
        </receiver>  
    
        <service android:enabled="true" android:name=".MyService" />
        <service android:enabled="true" android:name=".MyNewpic" />
    
      </application>
    
    </manifest> 
    

    【讨论】:

      【解决方案3】:

      你没有嵌套 Activities 在其他 Activities 中。它应该是这样的:

      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.myfirstapp"
          android:versionCode="1"
          android:versionName="1.0" >
      
          <uses-sdk
              android:minSdkVersion="8"
              android:targetSdkVersion="17" />
      
          <application
              android:allowBackup="true"
              android:icon="@drawable/ic_launcher"
              android:label="@string/app_name"
              android:theme="@style/AppTheme" >
              <activity
                  android:name="com.example.myfirstapp.MainActivity"
                  android:label="@string/app_name" >
              </activity>
              <activity
                  android:name="com.example.myfirstapp.DisplayMessageActivity"
                  android:label="@string/title_activity_display_message"
                  android:parentActivityName="com.example.myfirstapp.MainActivity" >
                  <meta-data
                      android:name="android.support.PARENT_ACTIVITY"
                      android:value="com.example.myfirstapp.MainActivity" >
                      <intent-filter>
                          <action android:name="android.intent.action.MAIN" />
      
                          <category android:name="android.intent.category.LAUNCHER" />
                      </intent-filter>
                  </meta-data>
              </activity>
          </application>
      
      </manifest>
      

      请阅读 AndroidManifest.xml file 的 Android 文档

      【讨论】:

      • 它告诉我,“没有找到启动器活动!”。
      • @user2345325:这两个Activity中哪个应该是第一个?而不是他们的订购。当您的应用程序图标被点击时,哪个应该首先运行?
      猜你喜欢
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 2019-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多