今日、私はAndroid app from Java to Kotlin!:)に翻訳することにしましたが、これを入力すると非常に驚きました:
_val searchItem = menu.findItem(R.id.action_search)
val searchView = MenuItemCompat.getActionView(searchItem) as SearchView
_
そしてAndroid Studioは私に言った:「 'getActionView(MenuItem!):View!'は非推奨です。Java "で非推奨
だからあなたに解決策を尋ねる前に、私は解決策が何であるかをGoogleに尋ね、私は解決策を見つけると信じていた:「getActionView()を直接使用する」。
だから私はこのようにコードを修正しました:
_val searchView = MenuItemCompat.getActionView() as SearchView
_
しかし、getActionView()
はまだ交差しているので、まったく理解できません...
あなたが私を助けることができるならば、私はとても幸せです:)ありがとう!
Javadocによると:
GetActionView()を直接使用します。
したがって、あなたがすべきことは:
val searchView = searchItem.getActionView() as SearchView
Egorが示唆するように、このようにできます
getMenuInflater().inflate(R.menu.menu_items, menu);
MenuItem menuItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) menuItem.getActionView();
search(searchView);
return true;
Android developer websiteで提供されているものと同じものを使用できます。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the options menu from XML
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
// Get the SearchView and set the searchable configuration
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
// Assumes current activity is the searchable activity
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default
return true;
}
次のように、actionView
をKotlinで直接使用します。
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.actions, menu)
val searchItem = menu?.findItem(R.id.action_search)
val searchView = searchItem?.actionView as SearchView
searchView.animate()
// TODO: Configure the search info and add any event listeners...
return super.onCreateOptionsMenu(menu)
}