如何在Android清单文件中声明两个包及其活动?

10

我在我的Android应用程序中有两个包。如何在Android清单文件中提及这些不同的包以及它们的活动?在我的代码中,我已经给出了以下内容:

<manifest package="com.tabwidget">
    <application>
        <activity android:name=".com.tabwidget.Tab"></activity>
        <activity android:name=".com.tabwidget.TabHostProvider"></activity>
        <activity android:name=".com.tabwidget.TabView"></activity>
    </application>
</manifest>                  
<manifest package="com.kpbird.tabbarcontrol">
    <application>
        <activity android:name=".com.kpbird.tabbarcontrol.TabbarView"></activity>
    </application>
</manifest>

但是我遇到了异常:无法找到显式活动类...........我做错了什么吗?请帮忙……

2个回答

17

似乎您在XML中犯了一些错误:

<manifest package="com.tabwidget">
    <application>

        1) BELOW: starting the names by "." means that
        you are implicitely extending the package prefix defined in the package 
        attribute of the manifest XML tag. 
        For example, if your package is "com.tabwidget", defining".MyActivity"
        will be interpreted as "com.tabwidget.MyActivity"
        By removing the first ".", you use an explicit notation instead:
        whatever your package is, "com.tabwidget.MyActivity" is interpreted
        as "com.tabwidget.MyActivity"
        <activity android:name=".com.tabwidget.Tab"></activity>
        <activity android:name=".com.tabwidget.TabHostProvider"></activity>
        <activity android:name=".com.tabwidget.TabView"></activity>
    </application>
</manifest>                  

2) BELOW: a manifest file should only contain one manifest XML tag:
<manifest package="com.kpbird.tabbarcontrol">
    <application>

        3) BELOW: same mistake as 1)
        <activity android:name=".com.kpbird.tabbarcontrol.TabbarView"></activity>
    </application>
</manifest>

接下来的内容应该能够工作。它修复了以下三个错误:

<manifest package="com.kpbird.tabbarcontrol">
    <application>
        <activity android:name="com.tabwidget.Tab"></activity>
        <activity android:name="com.tabwidget.TabHostProvider"></activity>
        <activity android:name="com.tabwidget.TabView"></activity>
        <activity android:name=".TabbarView"></activity>
    </application>
</manifest>

感谢您的回复。但是TabbarView Activity属于不同的包。如何将该包放置在清单文件中?您说manifest.xml文件中只能有一个manifest标记。 - hemanth kumar
1
我在这个目的中使用了<manifest package="com.kpbird.tabbarcontrol">。在我的清单文件中,您的应用程序将被称为“com.kpbird.tabbarcontrol”,它将通过在activity标签中使用显式符号来使用com.tabwidget.*,并且将通过使用隐式符号来使用com.kpbird.tabbarcontrol.TabbarView。您可能希望反转此操作。在这种情况下,请使用“com.tabwidget”作为包名称,对各种Tabwidget活动使用隐式符号,并对TabbarView使用显式符号。 - Shlublu

1
你可以这样做。你不需要显式地包含不同的包。
<manifest package="com.tabwidget">
<application>
    <activity android:name="com.tabwidget.Tab"></activity>
    <activity android:name="com.tabwidget.TabHostProvider"></activity>
    <activity android:name="com.tabwidget.TabView"></activity>
    <activity android:name="com.tabwidget.TabbarView"></activity>
</application>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接