38

getActionView()中引入了操作栏API 11,如果我想要向后兼容,还有什么替代方法getActionView()

例如

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;
}
4

3 回答 3

86

您可以使用支持库中的MenuItemCompat.getActionView(MenuItem menuItem)来获取 pre 11 API 上的操作视图。

于 2013-08-06T22:45:18.930 回答
54
@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);
}

有关详细信息,请参阅http://developer.android.com/guide/topics/ui/actionbar.html

于 2014-01-27T23:09:21.963 回答
12

为了向后兼容,您可以使用ActionBarCompatActionBarScherlock。在这两种情况下,您都可以使用方法getActionView().您必须确保导入,在第一种情况下是来自兼容性库 ( android.support.v4.view.MenuItemCompat)。如果你使用ActionBarSherlock你必须import com.actionbarsherlock.view.MenuItem。那么你应该可以使用 item.getActionView().

老的

自 2013 年 8 月以来,我祈祷人们投票反对。您必须确保OP的问题日期导入,在第一种情况下引入的Android来自兼容性库(ActionBarCompactandroid.support.v4.view.MenuItemCompat)。即使如果您使用 ActionBarSherlock 仍然是一个有效的选择,一个选项正在朝着 ActionBarCompact 发展。

所以另一个选择是使用它,当然,所有你必须来自支持库的导入,例如 android.supportimport com.v4actionbarsherlock.view.MenuItemCompatMenuItem。那么你应该可以使用 item.getActionView()。

于 2013-03-26T15:45:17.960 回答