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)を使用して、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

下位互換性のために、またはのいずれかを使用できActionBarCompatますActionBarScherlock。どちらの場合も、メソッドを使用できます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 に答える