Объявление деятельности в 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" >

Другие вопросы по тегам