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 - это проект library.
Что мне нужно для устранения этого ActivityNotFoundException
?
Ответы
Ответ 1
Я просто решил проблему.
Все, что мне нужно было сделать, это добавить FQN в проект Application 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
имеет значение, а не библиотека.
Ответ 2
Может, это сработает?
Intent mIntent = new Intent();
mIntent.setClassName(mActivity, "com.example.baseapp.MyEditPreferences");
mActivity.startActivity(mIntent);
Ответ 3
Если вы используете классы, имена которых включены в пакет android (Настройки, Предпочтения, Активность,...), вам необходимо указать следующее:
Intent i = new Intent(this, <name_of_your_package>.classname.class);
Если вы не поместите "name_of_your_package", компилятор подумает, что вы ссылаетесь на класс в пакете android (android. *).
Ответ 4
Я знаю, что это очень старый поток, но у меня была такая же проблема. В моем случае все, что мне нужно было сделать, это удалить ложный
import java.util.prefs.Preferences;
Ответ 5
Просто проверьте свой манифест на наличие ошибок, которые ваша IDE не указала.