Verbleibende Abwärtskompatibilität
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Compose ausprobieren
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Informationen zum Hinzufügen einer Suchfunktion in Compose
Das Dreistrich-Menü SearchView
und die Aktionsleiste sind nur unter Android 3.0 und höher verfügbar. Für ältere Plattformen können Sie auf das Suchfeld zurückgreifen. Das Suchdialogfeld ist eine vom System bereitgestellte Benutzeroberfläche, die beim Aufrufen über Ihrer Anwendung eingeblendet wird.
Mindest- und Ziel-API-Level festlegen
Wenn Sie das Suchdialogfeld einrichten möchten, müssen Sie zuerst in Ihrem Manifest angeben, dass Sie ältere Geräte unterstützen, aber Ihre App auf Android 3.0 oder höher ausrichten möchten. In diesem Fall verwendet Ihre Anwendung unter Android 3.0 oder höher automatisch die Aktionsleiste und auf älteren Geräten das traditionelle Menüsystem:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" />
<application>
...
Suchdialogfeld für ältere Geräte bereitstellen
Wenn Sie das Suchfeld auf älteren Geräten aufrufen möchten, rufen Sie onSearchRequested()
auf, wenn ein Nutzer den Menüpunkt „Suchen“ aus dem Optionsmenü auswählt. Da auf Geräten mit Android 3.0 und höher das Symbol SearchView
in der Aktionsleiste angezeigt wird (wie in der ersten Lektion gezeigt), wird onOptionsItemSelected()
nur bei Versionen älter als 3.0 aufgerufen, wenn der Nutzer den Menüpunkt „Suchen“ auswählt.
Kotlin
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.search -> {
onSearchRequested()
true
}
else -> false
}
}
Java
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.search:
onSearchRequested();
return true;
default:
return false;
}
}
Android-Buildversion zur Laufzeit prüfen
Prüfen Sie bei der Laufzeit die Geräteversion, um sicherzustellen, dass SearchView
auf älteren Geräten nicht verwendet wird. In unserem Beispielcode geschieht dies in der onCreateOptionsMenu()
-Methode:
Kotlin
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.options_menu, menu)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
(menu.findItem(R.id.search).actionView as SearchView).apply {
setSearchableInfo(searchManager.getSearchableInfo(componentName))
setIconifiedByDefault(false)
}
}
return true
}
Java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
}
return true;
}
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-08-23 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-23 (UTC)."],[],[],null,["# Remaining Backward Compatible\n\nTry the Compose way \nJetpack Compose is the recommended UI toolkit for Android. Learn how to add search functionality in Compose. \n[Filter a list →](/develop/ui/compose/quick-guides/content/filter-list-while-typing) \n\nThe [SearchView](/reference/android/widget/SearchView) and action bar are only available on Android 3.0 and\nlater. To support older platforms, you can fall back to the search dialog. The search dialog is a\nsystem provided UI that overlays on top of your application when invoked.\n\nSet Minimum and Target API levels\n---------------------------------\n\nTo setup the search dialog, first declare in your manifest that you want to support older\ndevices, but want to target Android 3.0 or later versions. When you do this, your application\nautomatically uses the action bar on Android 3.0 or later and uses the traditional menu system on\nolder devices: \n\n```xml\n\u003cuses-sdk android:minSdkVersion=\"7\" android:targetSdkVersion=\"15\" /\u003e\n\n\u003capplication\u003e\n...\n```\n\nProvide the Search Dialog for Older Devices\n-------------------------------------------\n\nTo invoke the search dialog on older devices, call [onSearchRequested()](/reference/android/app/Activity#onSearchRequested()) whenever a user selects the search\nmenu item from the options menu. Because Android 3.0 and higher devices show the\n[SearchView](/reference/android/widget/SearchView) in the action bar (as demonstrated in the first lesson), only versions\nolder than 3.0 call [onOptionsItemSelected()](/reference/android/app/Activity#onOptionsItemSelected(android.view.MenuItem)) when the\nuser selects the search menu item. \n\n### Kotlin\n\n```kotlin\noverride fun onOptionsItemSelected(item: MenuItem): Boolean {\n return when (item.itemId) {\n R.id.search -\u003e {\n onSearchRequested()\n true\n }\n else -\u003e false\n }\n}\n```\n\n### Java\n\n```java\n@Override\npublic boolean onOptionsItemSelected(MenuItem item) {\n switch (item.getItemId()) {\n case R.id.search:\n onSearchRequested();\n return true;\n default:\n return false;\n }\n}\n```\n\nCheck the Android Build Version at Runtime\n------------------------------------------\n\nAt runtime, check the device version to make sure an unsupported use of [SearchView](/reference/android/widget/SearchView) does not occur on older devices. In our example code, this happens in\nthe [onCreateOptionsMenu()](/reference/android/app/Activity#onCreateOptionsMenu(android.view.Menu)) method: \n\n### Kotlin\n\n```kotlin\noverride fun onCreateOptionsMenu(menu: Menu): Boolean {\n\n menuInflater.inflate(R.menu.options_menu, menu)\n\n if (Build.VERSION.SDK_INT \u003e= Build.VERSION_CODES.HONEYCOMB) {\n val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager\n (menu.findItem(R.id.search).actionView as SearchView).apply {\n setSearchableInfo(searchManager.getSearchableInfo(componentName))\n setIconifiedByDefault(false)\n }\n }\n return true\n}\n```\n\n### Java\n\n```java\n@Override\npublic boolean onCreateOptionsMenu(Menu menu) {\n\n MenuInflater inflater = getMenuInflater();\n inflater.inflate(R.menu.options_menu, menu);\n\n if (Build.VERSION.SDK_INT \u003e= Build.VERSION_CODES.HONEYCOMB) {\n SearchManager searchManager =\n (SearchManager) getSystemService(Context.SEARCH_SERVICE);\n SearchView searchView =\n (SearchView) menu.findItem(R.id.search).getActionView();\n searchView.setSearchableInfo(\n searchManager.getSearchableInfo(getComponentName()));\n searchView.setIconifiedByDefault(false);\n }\n return true;\n}\n```"]]