1
SearchableActivity
을 수동으로 시작하는 방법에 대해 relatively simple tutorial을 따라 가며 result
을 다시 얻을 수 있습니다.Activity에서 결과 얻기
그는
, 그것은 검색 의도를받을 수 있도록 기본적으로 (매니페스트) 검색 가능한 활동으로 기본Activity
(활동 A)를 설정 한 후 수동으로
startActivityForResult
와 실제 검색
Activity
(활동 B)를 시작한다
매니페스트를 변경 한 후 그는 한 블록의 코드 만 갖습니다. 내 질문 :
이 코드를 어디에 넣으시겠습니까?
private void handleIntent(Intent intent) {
// Get the intent, verify the action and get the query
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
// manually launch the real search activity
final Intent searchIntent = new Intent(getApplicationContext(),
MySearchActivity.class);
// add query to the Intent Extras
searchIntent.putExtra(SearchManager.QUERY, query);
startActivityForResult(searchIntent, ACTIVITY_REQUEST_CODE);
}
Activity
A 또는 B? 그리고 당신은 그것을 어디에서 부릅니까?
추가 정보 - 현재 어떻게 처리하고 있습니까? 잘라내시겠습니까?
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.menu, menu);
MenuItem searchItem = menu.findItem(R.id.menu_search);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(true);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
setupNewSearchView(searchItem, searchManager);
}
return true;
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void setupNewSearchView(final MenuItem searchItem, SearchManager searchManager) {
android.widget.SearchView searchView = (android.widget.SearchView) searchItem.getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(true);
}
잘 모르겠습니다. 'onNewIntent()'는 어디서 호출 되나요? 나는 'Activity' A에서 추측하고 있습니다.하지만 어디서? 'Activity' A가 시작될 때 (onCreate)? 아니면'SearchManager'가 정상적으로 호출되는 곳입니까? – KickingLettuce
안드로이드 시스템은 검색 화면에 텍스트를 쓰고 키보드의 검색 버튼을 누른 후 검색 할 때 안드로이드 시스템은 새로운 활동 (A) (검색 활동으로 인 텐트가있는 새로운 활동 (A))을 시작합니다. 'singleInstance'를 사용했습니다. Activity (A)의 onNewIntent 함수가 검색 작업 의도와 함께 호출됩니다. – JafarKhQ
다시 도움을 주셔서 감사합니다. 나는 네가하는 말을 이해한다. 그러나 "어디서"에 관해서는 아직도 불분명하다. 당신은 "그것은 검색 활동 의도와 함께 호출됩니다"라고 말했다. 바로 지금, 나는 onCreateOptionsMenu에서 이것을 처리한다. 위의 코드를 필요한 변경 작업 전에 어떻게 추가했는지 추가했습니다. 내가 그것을 부를 필요가 있습니까? (그리고 내가 이미 한 것을 제거해야합니까?) – KickingLettuce