从另一个库项目启动库Activity

时间:2017-10-04 07:25:06

标签: android android-library

我有一个库(LIB2)项目依赖于我编译为AAR并上传到Archiva上的另一个库(LIB1)项目。

当我尝试使用以下命令从LIB2启动LIB1活动时:

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

所以我做了一些研究,我尝试了这里找到的解决方案: Error calling Android activity from .aar library.和此处:Using an Android library project Activity within another project

现在,如果我这样做,正如我找到的解决方案所建议的那样,

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?

事实是我确实在Manifest中声明了Activity,所以我无法理解为什么它没有看到它。

任何解决方案?感谢。

1 个答案:

答案 0 :(得分:0)

使用时:

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){

}

希望它可以帮到你!