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 :

,451,515,
<?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

hello everryone은 안드로이드 개발에 익숙하지만 내 앱에서 검색 창 개념을 구현하려고하지만 구현이 불가능합니다. 내 문제가있는 코드를 게시 한 링크가 있습니다. http://stackoverflow.com/questions/16515964/i - 구현 - 검색 바 개념 - 내 - 애플 리케이션 내 –

답변

5

나는 안드로이드에 대해 같은 것은 문제도 값에 가지고있을 dn't : 레이블 문자열 resource.Hardcoding 문자열하지 않습니다 냄비해야합니다.

1

오류 메시지가 말한다 "검색 라벨해야 리소스 참조. "

그래서

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

잘못하고

매니페스트 쇼

android:value="SearchActivity" /> 
을 오히려

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

을 읽은 후 strings.xml의에서 '검열'에 대한 항목이 있어야합니다

Shoul 그

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

감사합니다 Heiko, 그 경고를 해결하지만, 검색 표시 줄은 여전히 ​​표시되지 않습니다. –

+1

내 경우에는 .searchactivity 또는 searchactivity woorks가 아니며 yes label은 문자열 리소스입니다. –

관련 문제