我一直在寻找一种方法来为我的应用添加搜索功能(特别是在应用栏上)。
上找到了一份文档我仔细按照每一步,但应用程序崩溃。
RES / XML / searchable.xml
public static DataTable CreateDataTable(this IEnumerable<int> items, string colName)
{
DataTable dt = new DataTable();
dt.Columns.Add(colName, typeof(int));
foreach (int item in items)
{
dt.Rows.Add(item);
}
return dt;
}
我创建了一个名为 SearchActivity
我在清单
的Manifest.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>
我在 MainActivity
中的OncreateOptionsMenu中添加了这些内容<application ... >
<activity android:name=".SearchActivity" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
...
</application>
这是 menu / menu_main.xml
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
// Get the searchview and set the searchable configuration
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
// Assumes current activity is the searchable activity
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
return true; }
有2个Activitues。
当用户点击MainActivity中的搜索图标时,我希望它转到SearchActivity并在那里显示搜索小部件。我该怎么做。
我应该将哪些内容添加到 SearchActivity.java ??
以下是应用程序崩溃时收到的日志消息 -
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_search"
android:title="@string/action_search"
android:orderInCategory="100"
android:icon="@drawable/ic_search_white"
app:showAsAction="ifRoom" />
答案 0 :(得分:0)
尝试添加
<meta-data
android:name="android.app.searchable"
android:value=".SearchActivity" />
在application
部分的您的Manifest.xml中
<application ... >
....
<meta-data
android:name="android.app.searchable"
android:value=".SearchActivity" />
....
<activity android:name=".SearchActivity" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
...
这告诉您的应用如何解决"android.app.searchable"
查看this,您会发现:
如果您希望应用程序中的每个活动都提供搜索对话框,请将上述元素作为元素的子元素插入,而不是每个元素。这样,每个活动都会继承该值,提供搜索对话框,并将搜索提供给相同的可搜索活动。 (如果您有多个可搜索的活动,则可以通过在单个活动中放置不同的声明来覆盖默认的可搜索活动。) 现在,您的活动已启用搜索对话框,您的应用程序已准备好执行搜索。