Widget da barra de pesquisa não iniciando atividade pesquisável
Estou tentando implementar uma pesquisa no meu aplicativo android usando um widget da barra de pesquisa na barra de ação.
Eu estou seguindo
http://developer.android.com/guide/topics/search/search-dialog.html http://developer.android.com/guide/topics/ui/actionbar.html#ActionView
tutoriais para fazer isso.
Eu tenho duas atividades envolvidas na pesquisa. A atividade SearchBar tem a barra de ação e AcceptSearch é minha atividade pesquisável. Embora eu tenha declarado qual atividade era a atividade pesquisável, a consulta não está sendo enviada para AcceptSearch e a atividade não é iniciada.
Configurei a barra de pesquisa para que uma dica da barra de pesquisa seja exibida quando o widget estiver vazio, mas a dica nunca aparece. Aqui está o meu código.
Barra de pesquisa
public class SearchBar extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.search_bar);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
//Inflate the options menu from XML
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
// Get the SearchView and set the searchable configuration
SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
return true;
}
AcceptSearch
public class AcceptSearch extends ListActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
//Get the intent, verify the action and get the query
Intent intent = getIntent();
if(Intent.ACTION_SEARCH.equals(intent.getAction()))
{
String query = intent.getStringExtra(SearchManager.QUERY);
//Start the search
doMySearch();
}
}
Searchable.xml
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_label"
android:hint="@string/search_hint">
</searchable>
opções_menu
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:title="Help"
android:id="@+id/menu_help"
android:showAsAction="always"
/>
<item
android:title="Categories"
android:id="@+id/menu_cats"
android:showAsAction="always"
/>
<item
android:id="@+id/menu_search"
android:title="Search with Searchlet"
android:icon="@drawable/ic_action_search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="android.widget.SearchView"/>
</menu>
Manifesto
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.searchlet"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".SplashScreenActivity"
android:label="@string/title_activity_splash_screen"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".AcceptSearch">
<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=".SearchBar"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.example.searchlet.CLEARSCREEN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
Acredito que todas as informações necessárias para recriar a situação.
Obrigado a todos antecipadamente. Eu apprecicate.