gpt4 book ai didi

永远不会调用 Android 搜索

转载 作者:太空狗 更新时间:2023-10-29 13:30:52 26 4
gpt4 key购买 nike

我完全被困住了,花了几个小时阅读可能的解决方案。根本无法启动我的搜索 Activity 。

我有一个主要 Activity ,我希望搜索按钮从中开始搜索 Activity :

文件 MainApp.java

public class MainApp extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainapplayout);
}
public boolean onCreateOptionsMenu(Menu m){
getMenuInflater().inflate(R.menu.mainappmenu,m);
return true;
}
public boolean onOptionsItemSelected(MenuItem m) {
if(m.getItemId()==R.id.menu_search){
return onSearchRequested(); // THIS IS CALLED, AND RETURNS TRUE
}else return false;
}
}

按下 UI 按钮或硬件搜索键都不会调用搜索。onSearchRequested() 肯定会被调用,并返回 true

文件AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest package="org.homphysiology.lists"
android:versionCode="1" android:versionName="1.0"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:minSdkVersion="8" />
<application
android:name="org.homphysiology.lists.MainApp"
****REMOVED THIS LINE NOW, thanks arju, still not working tho
android:icon="@drawable/ic_launcher">
<activity android:name="org.homphysiology.lists.MainApp">
<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="org.homphysiology.lists.SearchActivity"
/>
</activity>
<activity android:name="org.homphysiology.lists.SearchActivity">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
****REMOVED THIS LINE NOW, thanks tushar, still not working tho
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable"
/>
</activity>
</application>
</manifest>

我有以下内容:

文件 res/xml/searchable.xml :

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

这些字符串在 /res/values/strings.xml 中。

搜索 Activity 本身很简单,但从未创建 - 我在构造函数中有一个断点:

文件SearchActivity.java:

public class SearchActivity extends ListActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setListAdapter(...)
}
}

任何人都可以在这里发现任何问题吗?[编译在eclipse Juno 4.2.1,SDK 21.0.1,在HTC desire Z上测试]谢谢...


附录

((SearchManager)getSystemService(Context.SEARCH_SERVICE))
.getSearchableInfo(getComponentName())

返回 null。也许这只是在强调我的 SearchActivity 没有正确注册的事实......


修改@arju 的建议:我可以使用“手动”启动搜索 Activity

boolean onOptionsItemSelected(MenuItem m){
startActivity(new Intent(this,SearchActivity.class));
return true;
}

当然,这对硬件按钮不起作用,而且,它不显示系统搜索对话框。


我还尝试为整个应用程序而不是主要 Activity 设置搜索元数据:

<manifest>
<application>
<activity ...MainApp... > ... </activity>
<activity ...SearchActivity... > ... </activity>
<meta-data
android:name="android.app.default_searchable"
android:value="org.homphysiology.lists.SearchActivity"
/>
</application>
</manifest>

同样的问题!搜索 Activity 永远不会实例化。

最佳答案

Android documentation says :

Note: The < intent-filter> does not need a < category> with the DEFAULT value (which you usually see in < activity> elements), because the system delivers the ACTION_SEARCH intent explicitly to your searchable activity, using its component name.

编辑:

是这样的:

<searchable xmlns:android="http://schamas.android.com/apk/res/android"

应该是:

<searchable xmlns:android="http://schemas.android.com/apk/res/android"

注意 schamasschemas :)

关于永远不会调用 Android 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15597043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com