1

當我按下我的Android手機上的搜索按鈕時,我的搜索框未顯示。我想要做的是做一個ASyncTask(或後臺任務)來獲取一串字符串(人名)的JSON響應,搜索結果並使用IMDB具有的相同搜索功能將其顯示給用戶。目前,我正在使用字符串數組來測試我的搜索響應/請求。有任何想法嗎?Android搜索活動未開始

我按下搜索按鈕時,遇到下列警告(但我認爲這是無關的我的問題):

04-21 03:35:23.767: WARN/KeyCharacterMap(12946): Can't open keycharmap file 
04-21 03:36:48.978: WARN/KeyCharacterMap(12999): Error loading keycharmap file '/system/usr/keychars/qtouch-touchscreen.kcm.bin'. hw.keyboards.65537.devname='qtouch-touchscreen' 
04-21 03:37:21.408: WARN/KeyCharacterMap(2576): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
@Heiko魯普的

下面的錯誤已得到修復禮貌:

04-21 03:17:51.994: WARN/SearchableInfo(1293): Invalid searchable metadata for com.redacted/.SearchActivity: Search label must be a resource reference.

SearchActivity.java:

package com.redacted; 

import android.app.ListActivity; 
import android.app.SearchManager; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 

public class SearchActivity extends ListActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.search_results); 
     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); 
      showResults(query); 
     } 
    } 

    private void showResults(String q) { 
     String[] listItems = { "test", "my", "search", "list" }; 

     setListAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, listItems)); 
    } 
} 

searchable.xml:

<?xml version="1.0" encoding="utf-8"?> 
<searchable 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:searchButtonText="Search" 
    android:label="Redacted" 
    android:hint="Redacted" 
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"> 
</searchable> 

艙單的Manifest.xml的部分(元數據是內部標記,以便它是全球):

<activity android:launchMode="singleTop" 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> 
     <meta-data android:name="android.app.default_searchable" 
      android:value="SearchActivity" /> 
    </application> 

search_results.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 
    <ListView android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/list"></ListView> 
</LinearLayout> 
+0

你好everryone是新的android開發我試圖在我的應用程序中實現searchbar概念,但無法實現。這裏是我發佈我的代碼與我的問題的鏈接http://stackoverflow.com/questions/16515964/i -want-to-implement-searchbar-concept-in-my-app – 2013-05-13 06:34:20

回答

5

我陷入了同樣的問題。android:label的值必須是一個字符串resource.Hardcoding字符串不會wok。

1

錯誤消息說「搜索標籤必須成爲資源參考。「

所以

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

是錯誤的,而應讀

<searchable 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:label="@string/Redacted" 

再有 '絕密' 的條目中的strings.xml

您的清單顯示

android:value="SearchActivity" /> 

Shoul那不是

android:value=".SearchActivity" /> 
+1

感謝Heiko,解決了警告,但搜索欄仍未顯示。 – 2011-04-21 07:38:35

+1

既沒有.sealchactivity或搜索woorks在我的情況下,是的標籤是字符串資源 – 2013-02-05 14:35:04