메니페스트는 다음과 같이 설정했습니다.
 <activity android:name=".ContactView"
           android:label="@string/AddList"
          >
     
      <meta-data android:name="android.app.default_searchable" 
            android:value=".ContactListSearch" />    
           
           </activity>           
       
        <activity android:name=".ContactListSearch"
                 android:label="List Search"
                 android:launchMode="singleTop">
                  <intent-filter> 
           <action android:name="android.intent.action.SEARCH" /> 
          <category android:name="android.intent.category.DEFAULT" /> 
             </intent-filter> 
                 
                 <meta-data android:name = "android.app.searchable"
                            android:resource="@xml/searchable" />
                 </activity>              


이렇게 하고 나서 프로그램의 ContactView 액티비티에서  안드로이드 키중에 검색키(돋보기모양 키)를 누르면 ContactListSearch가 호출되는 것이 맞는 것인지요?

위의 두 activity는 ContactList라는 ListActivity를 상속하게 했습니다.

ContactList의 onCreate에서 
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL); 도 해줬습니다.

 onNewIntent는 다음과 같습니다.
public void onNewIntent(Intent intent) {
  ListAdapter adapter=makeMeAnAdapter(intent); 
  
  if (adapter==null) {
   Toast.makeText(getApplicationContext(), "called2", 1).show();
   finish();
  }
  else {
   Toast.makeText(getApplicationContext(), "called1", 1).show();
   setListAdapter(adapter);
  }
 }
ContactListSearch에서는 다음과 같이 makeMeAnAdapter를 만들어주는 constructor를 구성했습니다. (참고로 위의 makeMeAnAdapter라는 함수는 ContactList.java 에 선언만 되어 있는 ListAdapter형의 추상함수 입니다.

그리고 ContactListSearch는 다음과 같이 구성했습니다.
public class ContactListSearch extends ContactList{
 ListAdapter makeMeAnAdapter(Intent intent) {
  ListAdapter adapter=null; 
  
  if (intent.getAction().equals(Intent.ACTION_SEARCH)) {
   String query=intent.getStringExtra(SearchManager.QUERY);
   List<String> results=searchItems(query);
   
   adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,results);
   setTitle("검색어: "+query);
  }
  
  Toast.makeText(getApplicationContext(), "Called", 1).show();
  return(adapter);
 }
 
 private List<String> searchItems(String query) {
  List<String> results=new ArrayList<String>();
  
  for (String person : people) {
   if (person.indexOf(query)>-1) {
    results.add(person);
   }
  }
  
  return(results);
 }
}

사실 책의 예제와 똑같게 제가 만들고 있는 어플에 적용시킨 것인데
예제는
안드로이드의 검색키(돋보기)를  누르면 화면에 검색바와 자판이 뜨는 반면

제 어플에서는 onSearchRequested()만 호출(안에 Toast.makeText(getApplicationContext(), "Search Requested", 0).show(); 라는 구문을 선언해서 확인.) 되고 ContactListSearch는 호출되지 않는군요..


제 생각에는 메니페스트 부분에 문제가 있는 것 같은데 도무지 모르겠네요 ㅠㅠ