2012-09-17 130 views
0

我想在我的android項目中實現搜索對話框。我不明白我在向用戶顯示搜索對話框時缺少什麼。 下面是想推出搜索活動清單:搜索對話框不顯示

<activity 
     android:name=".ArrowsActivity" 
     android:label="@string/title_activity_main" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <meta-data android:name="android.app.default_searchable" 
       android:value=".Searchable" /> 
    </activity> 

這裏的清單可搜索活動:

<activity 
     android:name=".Searchable" 
     android:launchMode="singleTop" 
     android:label="@string/title_activity_searchable" > 
     <intent-filter> 
      <action android:name="android.intent.action.SEARCH" /> 
     </intent-filter> 
     <meta-data android:name="android.app.searchable" 
       android:resource="@xml/searchable"/> 
    </activity> 

這裏的searchable.xml:

<?xml version="1.0" encoding="utf-8"?> 
<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
    android:hint="@string/search_hint" 
    android:label="@string/search_label"> 
</searchable> 

檢索等級:

public class Searchable extends ListActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_searchable); 
    handleIntent(getIntent()); 
} 
@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); 
    // doMySearch(query); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_searchable, menu); 
    return true; 
} 

}

SO ..如何將搜索框彈出給用戶>我缺少什麼?

回答

1

只要在某處調用onSearchRequested(),就會開始在清單中聲明的​​搜索活動。

+0

我該從哪裏調用這個函數?啓動搜索的活動中的OnCreate()方法? – idish

+0

是的,來自ArrowsActivity。 – Dalmas

+0

做完了,沒有任何反應。代碼: – idish