19314


オプションメニューの内容を動的に変更したいのですが、MenuItemのインスタンス作成時にエラーが出ます。  
[参考サイト](http://d.hatena.ne.jp/zakkiver24+rororossa/20110316/1300285365)

var item = MenuItem()

[![画像の説明をここに入力](https://i.stack.imgur.com/AMVQy.png)](https://i.stack.imgur.com/AMVQy.png)

kotlinの場合、参考サイトと同じようにできるのでしょうか？

[こちらにも同じ質問をしていますTeratail](https://teratail.com/questions/20346)


CC BY-SA 3.0
2015-11-16T04:03:48.337
18872
2015-11-26T04:25:39.013
2015-11-17T11:29:24.343
10715
10715
question
android java kotlin
オプションメニューの内容を動的に変更する(Kotlin)


正攻法としては、Kotlin文法を学びJavaコードと対応付けられるようにする、ということになると思いますが、マルチポスト先ではそのよう指向されているようなので別の邪道を。

KotlinでAndroid開発を行っているということはおそらくAndroid
Studio上で開発していると思われますが、[JavaからKotlinへの変換機能](https://kotlinlang.org/docs/tutorials/kotlin-
android.html#converting-java-code-to-kotlin)があります。  
Javaコードが既に存在しているのであれば、その機能で自動変換してやればそれなりのKotlinコードが得られます。

今回の場合、適当にダミーの`Activity`クラスを新規作成し、そのファイルに該当メソッドをペーストした後、上記の機能を使用すると次のように変換されます。

[code]

    override fun onPrepareOptionsMenu(menu: Menu): Boolean {
        super.onPrepareOptionsMenu(menu)
        // メニューアイテムを取得
    
        if (flag === 0) {
            // menu0を表示
            menu.findItem(R.id.item0).setVisible(true)
            // menu1を非表示
            menu.findItem(R.id.item1).setVisible(false)
        } else if (flag === 1) {
            // menu0を非表示
            menu.findItem(R.id.item0).setVisible(false)
            // menu1を表示
            menu.findItem(R.id.item1).setVisible(true)
        }
        return true
    }
    
[/code]


CC BY-SA 3.0
2015-11-26T04:25:39.013
19314
2015-11-26T04:25:39.013
2808
18872
answer