2012-02-13 86 views
5

在我的应用我有在manifest.xml文件中定义这样的主要活动:没有启动活动中发现,尽管被宣布的manifest.xml

<activity 
      android:name=".MainActivity" 
      android:label="@string/guide_activity" > 
      <intent-filter> 
       <category android:name="android.intent.category.LAUNCHER" /> 
       <action android:name="android.intent.action.MAIN" /> 

       <action android:name="android.intent.action.SEARCH" /> 
      </intent-filter> 
      <meta-data android:name="android.app.searchable" 
        android:resource="@xml/searchable"/> 
     </activity> 

,当我从Eclipse运行连接到该项目真实设备或模拟器我在控制台中收到以下消息: 找不到启动程序活动

这可能是什么原因?

回答

15

将意图过滤器拆分为两个独立的过滤器。如果你像这样混合它们,android不会确定其中的一个是启动器过滤器。

<activity 
    android:name=".MainActivity" 
    android:label="@string/guide_activity" > 

     <intent-filter> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <action android:name="android.intent.action.MAIN" /> 
     </intent-filter> 

     <intent-filter> 
      <action android:name="android.intent.action.SEARCH" /> 
     </intent-filter> 

     <meta-data android:name="android.app.searchable" 
       android:resource="@xml/searchable"/> 
</activity> 
+0

感谢您的回答,它的工作,但究竟是什么原因,它应该无需上班的时候机器人发送意图对你的应用拆分 – 2012-02-13 11:05:30

+2

,它会检查,如果一个意图过滤器来测试符合所有规则。只有当这是真的,意图才会实际交付。在这种情况下,它会检查启动意图是否匹配“搜索”和“主要”两个操作。情况并非如此,所以意图将无法正确传递。如果将其拆分,系统会看到一个意图过滤器存在于所有规则匹配并正确提供主要意图的地方。 – 2012-02-13 11:10:30

+0

谢谢,即使我相信我从来没有在文档中看过这个,奇怪的:) – 2012-02-13 11:14:36