有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java getActionView已被弃用?

今天我决定把我的安卓应用程序从Java翻译成Kotlin!:)但当我键入以下内容时,我感到非常惊讶:

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

Android Studio告诉我:“getActionView(MenuItem!):风景!”不推荐使用。Java中已弃用“

所以在问你解决方案之前,我向谷歌询问解决方案是什么,我相信我找到了解决方案:“直接使用getActionView()

所以我修改了我的代码如下:

val searchView = MenuItemCompat.getActionView() as SearchView

但是getActionView()仍然是交叉的,所以我一点也不明白

如果你能帮助我,我将非常高兴:)谢谢


共 (4) 个答案

  1. # 1 楼答案

    正如伊戈尔所说,你可以这样做

        getMenuInflater().inflate(R.menu.menu_items, menu);
        MenuItem menuItem = menu.findItem(R.id.action_search);
    
        SearchView searchView = (SearchView) menuItem.getActionView();
        search(searchView);
        return true;
    
  2. # 2 楼答案

    在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)
    }
    
  3. # 3 楼答案

    Javadoc说:

    Use getActionView() directly.

    因此,你应该做的是:

    val searchView = searchItem.getActionView() as SearchView
    
  4. # 4 楼答案

    您可以使用android developer网站上提供的相同功能

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