안드로이드 개발 질문/답변
(글 수 45,052)
메니페스트는 다음과 같이 설정했습니다.
이렇게 하고 나서 프로그램의 ContactView 액티비티에서 안드로이드 키중에 검색키(돋보기모양 키)를 누르면 ContactListSearch가 호출되는 것이 맞는 것인지요?
위의 두 activity는 ContactList라는 ListActivity를 상속하게 했습니다.
ContactList의 onCreate에서
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL); 도 해줬습니다.
onNewIntent는 다음과 같습니다.
그리고 ContactListSearch는 다음과 같이 구성했습니다.
사실 책의 예제와 똑같게 제가 만들고 있는 어플에 적용시킨 것인데
예제는
안드로이드의 검색키(돋보기)를 누르면 화면에 검색바와 자판이 뜨는 반면
제 어플에서는 onSearchRequested()만 호출(안에 Toast.makeText(getApplicationContext(), "Search Requested", 0).show(); 라는 구문을 선언해서 확인.) 되고 ContactListSearch는 호출되지 않는군요..
제 생각에는 메니페스트 부분에 문제가 있는 것 같은데 도무지 모르겠네요 ㅠㅠ
<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는 호출되지 않는군요..
제 생각에는 메니페스트 부분에 문제가 있는 것 같은데 도무지 모르겠네요 ㅠㅠ




".ContactView"와 ".ContactListSearch"