getActionView已被弃用?

今天我决定把我的Android应用从Java转换到Kotlin! :)但是当我输入这个时,我感到非常惊讶:

val searchItem = menu.findItem(R.id.action_search) val searchView = MenuItemCompat.getActionView(searchItem) as SearchView 

而Android Studio告诉我:“’getActionView(MenuItem!):View!’ 已弃用。在Java中已弃用“

所以之前要问你我解决方案是什么解决方案,我相信我find解决方案:“直接使用getActionView()”。

所以我修改我的代码是这样的:

 val searchView = MenuItemCompat.getActionView() as SearchView 

getActionView()仍然交叉,所以我不明白…

我会很高兴,如果你能帮我:)谢谢!

Javadoc说:

直接使用getActionView()。

因此,你应该做的是:

 val searchView = searchItem.getActionView() as SearchView 

您可以使用与android开发人员网站上提供的相同的内容

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

正如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; 

直接在Kotlin中使用actionView ,如下所示:

  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) }