Android: активность не зарегистрирована в манифесте - PullRequest
4 голосов
/ 24 марта 2012
<uses-sdk android:minSdkVersion="7" />

<application
    android:description="@string/app_description"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Light" >
    <activity
        android:name="com.xyz.Main.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>
</application>

И инструмент Lint сообщает мне, что моя активность не зарегистрирована в манифесте, и если я пытаюсь запустить его, LogCat любезно сообщает мне:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.name/com.xyz.Main.MainActivity}: java.lang.ClassNotFoundException: com.xyz.Main.MainActivity

Это сводит меня с ума, я переустановил Eclipse, а также обновил SDK и прочее до уровня API 17, и теперь мне кажется, что я не могу запустить свое собственное приложение. Я понятия не имею, что, черт возьми, здесь не так, по-видимому, активность прекрасно зарегистрирована в файле manifest.xml.

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

Ответы [ 5 ]

4 голосов
/ 24 марта 2012

Имя вашего пакета содержит заглавную букву ("Main"), что может быть проблемой. Проверьте эту проблему на code.google.com:

http://code.google.com/p/android/issues/detail?id=27529

3 голосов
/ 08 мая 2012

У меня есть решение.Сегодня я почувствовал, что достаточно мотивирован, чтобы снова взять в свои руки этот проект и попытался перенести проект на Linux-дистрибутив (что привело меня к выводу, что Linux является проблемой для разработчика Android), а также интегрировать его »построчно "в новый проект Android.

Я использовал для реализации String- и Integer-интерфейсов с определенными константами и значениями (например, 0x00 для" visible ").К сожалению, у Android, похоже, проблемы с интерфейсами и классами активности.Удаление интерфейса и статические ссылки на константы позволили эмулятору избавиться от проблемы.

public class MyActivity extends Activity implements Options // [...]
Btn.setVisibility(VISIBLE); // bad idea

public class MyActivity extends Activity // [...]
Btn.setVisibility(Options.VISIBLE); // good idea

Надеюсь, это поможет хотя бы кому-то, кто ищет эту проблему.

2 голосов
/ 27 июля 2012

Если это произойдет, исправьте имя «пакета» (как уже говорили другие), затем обязательно перезапустите «Android Lint».

Предупреждение будет отображаться до тех пор, пока после исправления ошибки не будет снова запущен Lint.

1 голос
/ 23 октября 2013

Я получаю то же сообщение об ошибке из-за глупой ошибки с моей стороны.Мне потребовалось некоторое время, чтобы найти его, так что на всякий случай, если кто-то еще совершит ту же ошибку и наткнется на эту тему, вот что я сделал неправильно:

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

    <uses-sdk android:minSdkVersion="7"
              android:targetSdkVersion="14"/>

    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name">
    </application>

    <activity
        android:name="com.example.DogsDropDown.MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

</manifest>

Это очевидно, как только вы это увидите - яd поместил спецификацию вне спецификации , а не внутри нее.

1 голос
/ 19 июля 2012

У меня была та же проблема: Lint не распознал явно правильное описание в AndroidManifest.xml.

Затем я изменил имя пакета на одно, только с маленькими буквенными буквами и точками.

Схема рефакторинга в Eclipse не везде автоматически переименовывала имя пакета, поэтому мне пришлось исправлять несколько ситуаций вручную, например, повторно вводить имя пакета в файле манифеста.

Когда все части приложения наконец-тоссылаясь на новое имя пакета, Lint также был наконец удовлетворен.

Так что используйте заглавные буквы и цифры в именах пакетов, только если вам нравятся проблемы.

Я хотел бы назвать это ошибкой,или, по крайней мере, раздражение в Lint, поскольку имена пакетов должны соответствовать правилам Java.

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