ActivityNotFoundException (YES, это действие объявлено в AndroidManifest.xml)

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

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

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 ?

Я просто решил проблему.

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

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

Фактически, я полностью удалил любую ссылку на MyEditPreferences в AndroidManifest.xml проекта библиотеки и все еще работает.

Он также работает с оригинальным оператором 1-строчной startActivity:

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

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

Может быть, это сработает?

 Intent mIntent = new Intent(); mIntent.setClassName(mActivity, "com.example.baseapp.MyEditPreferences"); mActivity.startActivity(mIntent); 

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

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

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

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

 import java.util.prefs.Preferences; 

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