Запуск библиотечной активности из другого библиотечного проекта

У меня есть проект библиотеки (LIB2), который зависит от другого проекта библиотеки (LIB1), который я скомпилировал как AAR и загрузил в Archiva.

Когда я пытаюсь запустить действие LIB1 из LIB2, используя:

startActivity(new Intent(HelperActivity.this, xx.company.blabla.package.login.LoginActivity.class));

Я получил:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference

Поэтому я провел небольшое исследование и попробовал решения, найденные здесь: Ошибка вызова активности Android из .aar library. и здесь: Использование активности проекта библиотеки Android в другом проекте.

Теперь, если я это сделаю, как предлагают решения, которые я нашел,

Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
intent.setComponent(new ComponentName("xx.company.blabla.package.login",
            "xx.company.blabla.package.login.LoginActivity"));
startActivity(intent);

и в AndroidManifest.xml

<activity android:name="xx.company.blabla.package.login.LoginActivity"/>

Я получаю сообщение об ошибке ActivityNotFoundException

Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {xx.company.blabla.package.login/xx.company.blabla.package.login.LoginActivity}; have you declared this activity in your AndroidManifest.xml?

Дело в том, что я действительно объявил Activity в манифесте, поэтому не могу понять, почему он его не видит.

Любые решения? Спасибо.


person xuzhian    schedule 04.10.2017    source источник


Ответы (1)


Когда вы используете:

intent.setComponent(new ComponentName("xx.company.blabla.package.login",
            "xx.company.blabla.package.login.LoginActivity"));

Android найдет пакет xx.company.blabla.package.login, позже установив его в папку-контейнер пакета xx.company.blabla.package.login; наконец найти класс LoginActivity. Пытаться:

try {
    Class classLoginActivity = Class.forName("xx.company.blabla.package.login.LoginActivity");

    startActivity(new Intent(HelperActivity .this, classLoginActivity));
}catch (Exception e){

}

Надеюсь, это поможет вам!

person Dungnbhut    schedule 04.10.2017
comment
Я получаю исключение NullPointerException. java.lang.RuntimeException: невозможно запустить активность android.content.Context.getResources()' для нулевой ссылки на объект - person xuzhian; 04.10.2017
comment
Возможно, у вас есть библиотека конфигурации ошибок. Android не может найти вашу библиотеку. - person Dungnbhut; 04.10.2017