2017-07-25 32 views
10

Bugün android uygulamamı Java'dan Kotlin'e çevirmeye karar veriyorum! getActionView kullanımdan kaldırıldı mı?

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

Ve Android Studio söyledi

: ":) Ama çok sürpriz bu yazdığınızda oldu 'getActionView (Menuıtem!):! Görünüm' Java'dan "

Bu nedenle, Google'a sorduğum çözümü sormamdan önce çözüm nedir ve çözümü bulduğuma inanıyorum:" Doğrudan getActionView() kullanın. "

yüzden böyle benim kod modifiye: ...

val searchView = MenuItemCompat.getActionView() as SearchView 

Ama getActionView() hala bu yüzden hiç anlamıyorum geçildiği

bana yardım edebilir eğer çok mutlu olacak:) Teşekkür ederim !

+0

İkinci yaklaşımınız nedir? Hatayı gönderebilir misin? – guenhter

cevap

24

Javadoc diyor ki:

Kullanım getActionView() doğrudan.

Dolayısıyla, ne yapmalıyım: Egor önerdiği gibi android developer web

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

Buna ek olarak, [docs] (https://developer.android.com/reference/android/support/v4/view/MenuItemCompat.html#getActionView (android.view.MenuItem)) aslında getActionView öğesini bağlar. kullanım dışı bırakma bilgisinde 'MenuItem 'yöntemi. – zsmb13

2

Aynı kullanabilirsiniz, bu

gibi yapabilirsiniz
getMenuInflater().inflate(R.menu.menu_items, menu); 
    MenuItem menuItem = menu.findItem(R.id.action_search); 

    SearchView searchView = (SearchView) menuItem.getActionView(); 
    search(searchView); 
    return true; 
1

üzerinde sağlanan

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

Orada ne yaptığını açıklayabilirseniz daha iyi olurdu. –

0

actionView doğrudan Kotlin'de, böyle:

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) 
} 
İlgili konular