2011-06-13 72 views
0

我已经实施了此处找到的操作栏https://github.com/johannilsson/android-actionbar,它的工作原理非常漂亮。但是,我添加了一个搜索按钮,无法显示搜索对话框。我遵循Google的搜索对话框教程来设置我的项目,但对话框不会显示出来。任何帮助?Android:激活操作栏中的SearchDialog

清单

<activity android:name=".HomeActivity" android:label="Intelicase Mobile" android:clearTaskOnLaunch="true"> 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    <!-- enable the search dialog to send searches to SearchableActivity --> 

    <meta-data android:name="android.app.default_searchable" 
      android:value=".SearchActivity" />    
</activity> 

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

<meta-data android:name="android.app.default_searchable" 
      android:value=".SearchActivity" /> 

<!-- this activity enables the search dialog to initiate searches in the SearchableActivity --> 
<activity android:name=".OtherActivity"> 
    <meta-data android:name="android.app.default_searchable" 
      android:value=".SearchActivity" /> 
</activity> 

操作栏设置

ActionBar actBar = (ActionBar) findViewById(R.id.actionbar); 
actBar.setTitle("Dashboard"); 
actBar.setHomeAction(new ActionBar.IntentAction(HomeActivity.this, intent, R.drawable.ic_title_home_default)); 

intent = new Intent().setClass(this, CaseEvidenceActivity.class); 
actBar.addAction(new ActionBar.IntentAction(this, intent, R.drawable.ic_title_export_default)); 

intent = new Intent().setClass(this, OtherActivity.class); 
actBar.addAction(new ActionBar.IntentAction(this, intent, R.drawable.ic_title_search_default)); 

OtherActivity

public class OtherActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.search); 

     onSearchRequested(); 
    } 
} 

searchables.xml

<?xml version="1.0" encoding="utf-8"?> 
<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
    android:label="Intelicase Mobile" 
    android:hint="Search Intelicase" android:searchSuggestAuthority="dictionary" 
    android:searchSuggestIntentAction="android.intent.action.VIEW"> 
</searchable> 

回答

1

操作栏设置

actionBar.addAction(new SearchMP()); 

private class SearchMP extends AbstractAction { 

    public SearchMP() { 
     super(R.drawable.title_search); 
    } 

    @Override 
    public void performAction(View view) { 
     onSearchRequested(); 
    } 

}