在android库模块中调用一个活动

时间:2016-02-19 14:02:40

标签: android android-intent android-studio module

我有一个Android库模块,我试图开始像

这样的活动
 Intent intent = new Intent(mContext, DetailsScreen.class);
            mContext.startActivity(intent);

我在模块中提出了上述请求,并在app gradle文件中引用了该模块,如compile project(':myModule')

此外,我已在app模块和myModule的清单文件中定义了活动,如

  <activity
            android:name="com.test.mymodule.DetailsScreen" >
            <intent-filter>
                <action android:name="com.test.mymodule.DetailsScreen" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

但是打开的活动是空白活动。

有人可以向我解释一下我做错了什么吗?

提前致谢:):)

3 个答案:

答案 0 :(得分:1)

您应该只在app清单中提及您的 ibrary活动。就像我们如何包含facebook或其他sdk活动一样。并从您的应用程序的意图开始活动。只是尝试从清单中删除活动。仅包含在app模块上(包必须来自库&#39;)

答案 1 :(得分:0)

右键单击App模块,然后单击Open Module Settings,从左侧选择App,在最后一个选项卡上将Module dependecy添加到lib(您不需要以这种方式编辑gradle文件,即使您有在你的gradle似乎是正确的)。 然后,仅在库模块的android清单中声明要打开的活动。

<activity android:name=".myLibActivity"/>

答案 2 :(得分:0)

此答案是从siddhesh复制的

我们可以使用反射来获取类对象。

Class.forName(“ com.mypackage.myMainActivity”)

将此代码添加到“图书馆”项目中以供调用,

try {
      Intent myIntent = new Intent(this,Class.forName("com.mypackage.myMainActivity"));
      startActivity(myIntent );
} catch (ClassNotFoundException e) {
     e.printStackTrace();
}

“ com.mypackage.myMainActivity”是Main项目中存在的Activity,需要从其Library项目中调用。