我有一个库(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,所以我无法理解为什么它没有看到它。
任何解决方案?感谢。
答案 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){
}
希望它可以帮到你!