ActivityNotFoundException (ДА, это действие объявлено в AndroidManifest.xml) - PullRequest
10 голосов
/ 14 июня 2011

Я нашел несколько потоков, сообщающих о подобной проблеме, но ни один из них действительно не предлагает то, что я еще не пробовал.

Невинный такой вызов:

mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));

со следующим в AndroidManifest.xml:

 <application>
    <activity android:name="MyActivityLib" />
    <activity android:name="com.example.baseapp.MyEditPreferences" android:label="@string/app_name">
    </activity>
 </application>

Вызывает следующее исключение:

06-14 14:06:50.297: ERROR/AndroidRuntime(9272): 
android.content.ActivityNotFoundException: Unable to find explicit activity class
{com.example.baseapp.paypal/com.example.baseapp.MyEditPreferences};
have you declared this activity in your AndroidManifest.xml?

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

AndroidManifest.xml - это файл в библиотеке проекта.

Что мне нужно сделать, чтобы устранить это ActivityNotFoundException?

Ответы [ 5 ]

14 голосов
/ 15 июня 2011

Я только что решил проблему.

Все, что мне нужно было сделать, это добавить FQN в Приложение проекта AndroidManifest.xml:

<activity android:name="com.example.baseapp.MyEditPreferences"
          android:label="com.example.baseapp.MyActivityLib:string/app_name">
</activity>

На самом деле,Я полностью удалил ссылку на MyEditPreferences в Библиотеке проекта AndroidManifest.xml проекта, и она все еще работает.

Она также работает с исходным однострочным оператором startActivity:

mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));

Вывод: значение имеет AndroidManifest.xml приложения, а не библиотеки.

1 голос
/ 14 июня 2011

Может это сработает?

Intent mIntent = new Intent();
mIntent.setClassName(mActivity, "com.example.baseapp.MyEditPreferences");
mActivity.startActivity(mIntent);
0 голосов
/ 08 марта 2016

Просто проверьте свой манифест на наличие ошибок, на которые IDE не указал.

0 голосов
/ 14 июня 2013

Если вы используете классы, имена которых включены в пакет Android (Настройки, Предпочтения, Активность, ...), вам нужно будет поставить это:

Intent i = new Intent(this, <name_of_your_package>.classname.class);

Если вы не укажете name_of_your_package, компилятор подумает, что вы ссылаетесь на класс в пакете android (android. *).

0 голосов
/ 14 мая 2013

Я знаю, что это очень старая тема, но у меня была такая же проблема.В моем случае все, что мне нужно было сделать, это удалить поддельные

import java.util.prefs.Preferences;
...