2016-08-25 7 views
0

は、合成プロパティを使用しての代わりに、FindItem関数方法を使用してfragment_photo_galleryレイアウトで定義されてmenu_item_searchメニュー項目にアクセスする方法はありますか?Kotlin Androidの拡張機能やメニュー

override fun onCreateOptionsMenu(menu: Menu, menuInflater: MenuInflater) { 
    super.onCreateOptionsMenu(menu, menuInflater) 
    menuInflater.inflate(R.menu.fragment_photo_gallery, menu) 

    //is there a way to access searchItem using synthetic properties? 
    val searchItem = menu.findItem(R.id.menu_item_search) 
} 
+0

[Kotlin Android Extensions - Kotlin Programming Language](https://kotlinlang.org/docs/tutorials/android-plugin.html)を見ましたか?私はAndroid用のKotlinを現在使用していませんが、あなたが単に 'import kotlinx.android.synthetic.main 'のようなインポートを追加する必要があると言うことができます。 。* 'を入力すると、アクティビティコードで' menu_item_search'という合成プロパティを使用できるようになります。 – mfulton26

+0

はい私は本当にありました。あなたの「解決策」は、onCreateメソッドで膨らんだレイアウトに対してのみ機能します(名前を付けたすべてのレイアウトアイテムにアクセスできます)。 onCreateOptionsMenuでメニューレイアウトが膨らんでいて、その名前(合成変数)を使ってmenu_item_searchにアクセスできませんでした。 –

答えて

5

MenuInflaterLayoutInflaterは基本的に異なる目的を果たします。

名前に "Inflater"という部分があり、 "inflate()"という名前のメソッドを実装していても、まったく別のことをします。 MenuInflaterは、Menusを膨張させ、LayoutInflaterは、Viewsを膨張させる。

Kotlin Android Extensionsは、Androidビューではなく、Androidメニューではなく、inflate()メソッドを使用するために作成されました。

短いストーリー - AndroidメニューでKAEを使用することはできません。