При запуске приложения Android запущено слишком много действий - PullRequest
0 голосов
/ 24 декабря 2009

Я подтверждаю о создании деятельности.

Мой Manifest.xml выглядит так:

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".FirstActivity"
          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=".SecondActivity"
          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=".ThirdActivity"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Вы можете увидеть свойство action android:name= свойство "android.intent.action.MAIN" и category android:name= означает "android.intent.category.LAUNCHER" для всех видов деятельности.

Когда приложение запускается, оно вызывает FirstActivity.

Затем вызывает бесполезную активность, такую ​​как ThirdActivity или SecondActivity.

В этом случае мой manifest.xml правильный?

Или мне нужно установить другое свойство для второго и третьего действия? Если так, то что это?

Интересно, manifest.xml файл подходит для моего дела.

Пожалуйста, сообщите.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 24 декабря 2009

Попробуйте эту конфигурацию:

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".FirstActivity" 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=".SecondActivity" android:label="@string/app_name">
    <intent-filter>
    </intent-filter>
</activity>
 <activity android:name=".ThirdActivity" android:label="@string/app_name">
    <intent-filter>
    </intent-filter>
</activity>
1 голос
/ 24 декабря 2009

Одна из других проблем с использованием <category android:name="android.intent.category.LAUNCHER" /> для более чем одного действия: в меню запуска телефона будет отображаться более одного значка ...

Из документов:

CATEGORY_LAUNCHER Деятельность может быть начальным действием задачи и указан в приложении верхнего уровня пусковая.

1 голос
/ 24 декабря 2009

Думайте о Intent как о сообщении, используемом для начала Activity, чтобы что-то сделать. Таким образом, я могу создать Intent для просмотра веб-страницы, а приложение с Activity, которое знает, как просматривать веб-страницу - скорее всего, браузер, - может перехватывать его Намерение как воздействовать на него.

Вы сообщаете Android, какие действия могут выполнять с какими Интентами, используя часть <intent-filter> вашего Манифеста.

MAIN Intent особенный. Когда приложение запускается, оно отправляется приложению, и в основном оно говорит "Go!" Таким образом, Activity, который должен отображаться первым, должен перехватить это, имея правильно определенный <intent-filter>.

Поскольку у вас были все три действия с MAIN в их фильтре, все они ответили на запрос о запуске вашего приложения. Таким образом, вы должны иметь это <intent-filter> только для FirstActivity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...