Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the alternative to getActionView() before API level11 in android?

getActionView() for action bar was introduced in API 11, If I want backward compatibility what is the alternative for getActionView() ?

e.g.

public boolean onCreateOptionsMenu(Menu menu) {
   getMenuInflater().inflate(R.menu.action_bar_menu, menu);

   final MenuItem item = menu.findItem(R.id.menuitem);
   item.getActionView() //Works from API level 11

   return true;
}
like image 331
sat Avatar asked Mar 26 '13 15:03

sat


3 Answers

You can use MenuItemCompat.getActionView(MenuItem menuItem) from the support library to get the action view on pre 11 API.

like image 93
AdamVe Avatar answered Nov 03 '22 15:11

AdamVe


@Override
public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.main_activity_actions, menu);
  MenuItem searchItem = menu.findItem(R.id.action_search);
  SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
  // Configure the search info and add any event listeners
  ...
  return super.onCreateOptionsMenu(menu);
}

See http://developer.android.com/guide/topics/ui/actionbar.html for details

like image 23
Yuwen Avatar answered Nov 03 '22 17:11

Yuwen


For backwards compatibility you can use either ActionBarCompat or ActionBarScherlock. In both cases you can use the method getActionView(). You have to be sure that the import, in the first case is from the compatibility library ( android.support.v4.view.MenuItemCompat). If you use ActionBarSherlock you have to import com.actionbarsherlock.view.MenuItem. Then you should be ok using item.getActionView().

Old

Since August 2013, and I pray people down-voting to take a look. You have to be sure that the OP's question date import, Android introduced in the first case is from the compatibility library ( ActionBarCompactandroid.support.v4.view.MenuItemCompat). Even though If you use ActionBarSherlock is still a valid choice, an option is moving towards ActionBarCompact.

So another option is to use it, and of course, all the importsyou have to came from the support library, e.g. android.supportimport com.v4actionbarsherlock.view.MenuItemCompatMenuItem. Then you should be ok using item.getActionView().

like image 12
Blackbelt Avatar answered Nov 03 '22 16:11

Blackbelt