2010-10-30 2 views
5

Когда я устанавливаю приложение на устройство или эмулятор, оно появляется несколько раз в меню приложений, в моем случае я получаю 4 значка, показывающие мое имя приложения.Почему мое приложение появляется 4 раза на моем устройстве?

Кажется, что каждый значок, представляющий активность, и поскольку мое приложение содержит 3 вкладки (с деятельностью) первые 3 иконки на моем меню перейти к конкретной деятельности, а четвёртая значок берет меня само приложение

Это мой манифест

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

    <uses-sdk android:minSdkVersion="7" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>  
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 

    <application android:icon="@drawable/icon" 
        android:label="@string/app_name" 
        android:name="com.jameselsey.domain.GlobalState" 
        android:theme="@android:style/Theme.NoTitleBar"> 

     <activity android:name=".DefaultActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name=".MyContactsActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name=".MyMapsActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name=".OptionsActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <uses-library android:name="com.google.android.maps" /> 
    </application>  
</manifest> 

Что я могу сделать только один значок для моего приложения на устройстве, а не 4?

Благодаря

ответ

6

Ответ уже предоставлены, но я просто информируя его. В Java приложение начнет с класса, который содержит основной метод и который будет в основном быть одиночным точкой входа во все приложение.

В Android вы могли заметить, что в вашем классе Activity нет основного метода. Здесь мы используем файл манифеста, чтобы сделать то же самое. Приложение может иметь несколько точек ввода, а "android.intent.action.MAIN" указывает, что это действие должно быть основным начальным действием, а категория LAUNCHER говорит, что эта точка входа должна быть указана в панели запуска приложения. После того, как вы сделаете операцию как LAUNCHER, андроид предоставит ей значок и имя приложения, и вы должны заметить, что нажатие на каждый из 4 значков в вашем случае приведет к 4 различным действиям.

Суть в том, что наше приложение не требует нескольких точек входа, которые вам не нужно использовать.

+0

Самый описательный ответ, но +1 всем остальным. Благодаря :) – Jimmy

10

Потому что у вас есть 4 мероприятия с

`   <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 

Это добавляет значок запуска для вашей деятельности.

+0

Спасибо, это очень помогло мне! –

5

удалить intent-filter из последних 3 деятельности