2012-02-13 23 views
5

Trong ứng dụng của tôi, tôi có hoạt động chính được định nghĩa trong tập tin manifest.xml như thế này:hoạt động Không Launcher tìm thấy, dù đã được khai báo trong 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> 

khi tôi chạy dự án từ nhật thực kết nối với một thiết bị thực hoặc trình mô phỏng tôi nhận được thông báo sau trong bảng điều khiển: Không tìm thấy hoạt động Launcher nào

lý do nào có thể xảy ra?

Trả lời

15

Tách bộ lọc ý định thành hai bộ lọc riêng biệt. Nếu bạn kết hợp chúng như thế này, android sẽ không xác định rằng một trong hai là bộ lọc trình khởi chạy.

<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

Cảm ơn cho câu trả lời, nó làm việc, nhưng lý do của việc này là gì, nó là nghĩa vụ phải làm việc mà không cần phải chia –

+2

Khi android gửi một ý định hướng ứng dụng của bạn, nó sẽ kiểm tra các bộ lọc ý định để kiểm tra nếu một phù hợp với tất cả các quy tắc. Chỉ khi điều đó đúng, ý định sẽ thực sự được giao. Trong trường hợp này, nó sẽ kiểm tra xem mục đích khởi chạy có khớp với cả hai hành động "SEARCH" và "MAIN" hay không. Đây không phải là trường hợp, do đó, ý định sẽ không được chuyển giao một cách chính xác. Nếu bạn chia nhỏ nó, hệ thống sẽ thấy rằng một intentfilter tồn tại trong đó tất cả các quy tắc phù hợp và cung cấp đúng mục đích chính. –

+0

Cảm ơn, thậm chí tôi tin rằng tôi không bao giờ đọc điều này trong tài liệu, lạ :) –

Các vấn đề liên quan