2017-07-25 216 views
10

今天我决定把我的android应用程序从Java翻译成Kotlin! :)不过我是当我键入这个非常惊讶:getActionView已被弃用?

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

和Android工作室告诉我:“ 'getActionView(菜单项!):查看'在Java中已弃用“

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

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

val searchView = MenuItemCompat.getActionView() as SearchView 

getActionView()仍然越过,所以我完全不明白...

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

+0

你的第二种方法有什么问题?你能发布错误吗? – guenhter

回答

24

的Javadoc说:

使用getActionView()直接。

因此,你应该做的是:

val searchView = searchItem.getActionView() as SearchView 
+0

为了补充一点,[docs](https://developer.android.com/reference/android/support/v4/view/MenuItemCompat.html#getActionView(android.view.MenuItem))实际上将'getActionView '弃用信息中'MenuItem'的方法。 – zsmb13

2

您可以使用相同的提供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; 
} 
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; 
+0

如果你能解释你在那里做了什么,那会更好。 –

0

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