diff options
Diffstat (limited to 'docs/html/training/search/backward-compat.jd')
-rw-r--r-- | docs/html/training/search/backward-compat.jd | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/docs/html/training/search/backward-compat.jd b/docs/html/training/search/backward-compat.jd new file mode 100644 index 0000000..0894fa9 --- /dev/null +++ b/docs/html/training/search/backward-compat.jd @@ -0,0 +1,87 @@ +page.title=Remaining Backward Compatible +trainingnavtop=true +previous.title=Storing and Searching for Data +previous.link=search.html + +@jd:body + + <div id="tb-wrapper"> + <div id="tb"> + <h2>This lesson teaches you to</h2> + + <ul> + <li><a href="{@docRoot}training/search/backward-compat.html#set-sdk">Set Minimum + and Target API levels</a></li> + + <li><a href="{@docRoot}training/search/backward-compat.html#provide-sd">Provide the Search + Dialog for Older Devices</a></li> + + <li><a href="{@docRoot}training/search/backward-compat.html#check-ver">Check the Android Build + Version at Runtime</a></li> + </ul> + </div> + </div> + + <p>The {@link android.widget.SearchView} and action bar are only available on Android 3.0 and + later. To support older platforms, you can fall back to the search dialog. The search dialog is a + system provided UI that overlays on top of your application when invoked.</p> + + <h2 id="set-sdk">Set Minimum and Target API levels</h2> + + <p>To setup the search dialog, first declare in your manifest that you want to support older + devices, but want to target Android 3.0 or later versions. When you do this, your application + automatically uses the action bar on Android 3.0 or later and uses the traditional menu system on + older devices:</p> + <pre> +<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> + +<application> +... +</pre> + + <h2 id="provide-sd">Provide the Search Dialog for Older Devices</h2> + + <p>To invoke the search dialog on older devices, call {@link + android.app.Activity#onSearchRequested onSearchRequested()} whenever a user selects the search + menu item from the options menu. Because Android 3.0 and higher devices show the + {@link android.widget.SearchView} in the action bar (as demonstrated in the first lesson), only versions + older than 3.0 call {@link android.app.Activity#onOptionsItemSelected onOptionsItemSelected()} when the + user selects the search menu item. + </p> + <pre> +@Override +public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.search: + onSearchRequested(); + return true; + default: + return false; + } +} +</pre> + + <h2 id="check-ver">Check the Android Build Version at Runtime</h2> + + <p>At runtime, check the device version to make sure an unsupported use of {@link + android.widget.SearchView} does not occur on older devices. In our example code, this happens in + the {@link android.app.Activity#onCreateOptionsMenu onCreateOptionsMenu()} method:</p> + <pre> +@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; +} +</pre> |