2017-07-25 263 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) 
}