Объявление деятельности в AndroidManifest.xml
У меня ошибка выполнения в моем приложении котировки акций. У меня есть приложение, в котором вы вводите свой код акции (как на фондовом рынке) и перечисляете его двумя кнопками. Одна кнопка для отображения цитаты, а другая для просмотра дополнительной информации из Интернета. Веб-функция в порядке, но приложение падает, когда я нажимаю кнопку цитаты.
LogCat спрашивает меня, объявил ли я свою активность в моем AndroidManifest.xml. Я все еще новичок в разработке Android, так что это лучшее из того, что я могу проанализировать. Я не уверен, где искать эти ошибки.
Просто используйте "mstf" в качестве исходного кода, если вам нужно проверить исправление.
Вы можете найти мое приложение здесь: https://github.com/xamroc/StockQuote/tree/bug-quote
Буду также признателен за любые советы по инструментам и методам отладки для Android.
7 ответов
У вас есть два действия в вашем пакете, но вы объявили только одно в манифесте.
Объявите другой класс Activity:
Добавьте это в свой манифест:
<activity
android:name="com.example.stockquote.StockInfoActivity"
android:label="@string/app_name" />
Вставьте это <activity android:name=".StockInfoActivity" ></activity>
в вашем AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.stockquote"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.stockquote.MainActivity"
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="com.example.stockquote.StockInfoActivity" >
</activity>
</application>
Поэтому , когда вы когда-либо создаете новый класс, вы должны создать действие в файле "AndroidManifest.xml" внутри тега приложения следующим образом:
`
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".mainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".loginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
`
Источник: http://developer.android.com/guide/components/activities.html
Вы должны объявить свою активность в файле манифеста, чтобы он был доступен для системы. Чтобы объявить о своей активности, откройте файл манифеста и добавьте
<activity>
элемент как дитя<application>
элемент. Например:<manifest ... > <application ... > <activity android:name=".ExampleActivity" /> ... </application ... > ... </manifest >
Есть несколько других атрибутов, которые вы можете включить в этот элемент, чтобы определить свойства, такие как метка для действия, значок для действия или тема для стилизации пользовательского интерфейса действия.
Атрибут android:name является единственным обязательным атрибутом - он определяет имя класса действия. После того как вы опубликуете свое приложение, вы не должны менять это имя, потому что если вы это сделаете, вы можете нарушить некоторые функции, такие как ярлыки приложений.
Ваша активность означает, что вы должны объявить каждый класс в манифесте android, чтобы он распознал их как Activity.Таким образом после окончания основной части Activity вы можете сделать следующее:
<activity
android:name=".YourClassNAME"
/>
вам нужно объявить класс в своем манифесте, чтобы иметь возможность его использовать
<activityandroid:name="com.example.stockquote.StockInfoActivity"/>
так что добавь это
Вы должны объявить активность в манифесте xml, указав для launchMode значение singleTask или singleInstance.example:
<activity android:name="com.example.h.myapplication.MainActivity"
android:launchMode="singleTask" >