Tôi đã bị mắc kẹt về điều này trong một thời gian ngắn. Tôi đã xem xét các câu trả lời khác trên SO
nhưng chúng không giúp tôi giải quyết vấn đề của mình.Hộp Thoại Tìm Kiếm không được gọi là onSearchRequested()
Vấn đề của tôi là hộp thoại tìm kiếm không được gọi bởi onSearchRequested()
. Tôi không thể tìm ra những gì đang xảy ra với tìm kiếm của tôi ...
Mã liên quan như sau ...
Manifest
<activity
android:name=".SearchableActivity"
android:label="@string/app_name"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
/res/xml/searchable.xml
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/search_hint" >
</searchable>
Tôi có tài nguyên chuỗi được xác định trong strings.xml
.
lớp SearchableActivity
public class SearchableActivity extends ListActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("SEARCH", "HERE");
handleIntent(getIntent());
}
public void onNewIntent(Intent intent) {
setIntent(intent);
handleIntent(intent);
}
public void onListItemClick(ListView l, View v, int position, long id) {
// call the appropriate detail activity
}
private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
doSearch(query);
}
}
private void doSearch(String queryStr) {
Toast.makeText(getApplicationContext(), queryStr, Toast.LENGTH_LONG).show();
}
}
Các đoạn mã trong hoạt động đó là cách gọi việc tìm kiếm ...
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getTitle().equals("Search")) {
Toast.makeText(getApplicationContext(), "Search = "+onSearchRequested(), Toast.LENGTH_LONG).show();
return onSearchRequested();
} else {
return false;
}
}
onSearchRequested()
đang trở lại true
. Nhưng số SearchableActivity
không được gọi. Bất kỳ trợ giúp được đánh giá cao.
Cảm ơn bạn rất nhiều.
CẬP NHẬT
Đừng bận tâm! Tôi đã hiểu rồi!
Giải pháp là di chuyển meta-data
bên ngoài thẻ activity
và bên trong thẻ application
. Đã thêm dưới đây làm câu trả lời cho những người gặp sự cố này.
Cảm ơn.
Cảm ơn. Đã cố gắng thêm 'android: value =". SearchableActivity' vào 'meta-data' nhưng không trợ giúp. – neo108
hey try overriding theNewIntent() –