2011-03-02 85 views
1

我試圖在我的應用程序中實現搜索功能,這是目前非常基礎的。當我按下我的Nexus上的搜索按鈕時,搜索意圖似乎不會觸發,因爲onCreate()和onNewIntent()都不會被調用。我已經基本上覆制了您可以在Android developers上找到的整個示例,但它仍然無法正常工作。感謝您的幫助當按下搜索按鈕時,onCreate()或onNewIntent()沒有被觸發

RES/searchable.xml

<?xml version="1.0" encoding="utf-8"?> 
<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
    android:label="hello" 
    android:hint="Search lectures" > 
</searchable> 

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.openday.lectures" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="7" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".LecturesListActivity" 
        android:label="@string/app_name" 
        android:launchMode="singleTop"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" />    
      </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> 
     <activity android:name=".SingleLectureActivity" 
        android:label="Lecture"> 
     </activity> 
    </application> 

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
</manifest> 

LecturesListActivity.java(縮短)

public class LecturesListActivity extends ListActivity { 

    private String categoryDisplayed; 
    private String facultyDisplayed; 
    private List<Lecture> lectures; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     loadLectures(); 
     displayFaculties(); 
    } 

    @Override 
    protected void onNewIntent(Intent intent) { 
     setIntent(intent); 
     handleIntent(intent); 
    } 

    private void handleIntent(Intent intent) { 
     if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 
      String query = intent.getStringExtra(SearchManager.QUERY); 
      searchForLectures(query); 
     } 
    } 
} 
+0

你想在設備的搜索按鈕上做一些工作嗎? – 2011-03-02 05:13:55

回答

相關問題