2012-02-13 85 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