在Android的API level11之前getActionView()的替代方法是什么?

操作栏的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; } 

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

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

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

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

 @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