【Android】画面コンポーネント / Menu ~ コンテキストメニュー ~

■ はじめに

https://dk521123.hatenablog.com/entry/2013/10/04/234613

の続き。

 今回は、長押しで表示されるメニューの
「2)コンテキストメニュー (Context menu)」を扱う。

【1】作成方法

[1-1] [app]を右クリックし、[New]-[Android Resource File]を選択
[1-2] 以下の様に入力し、「OK」ボタン押下
 + File Name : (ここでは) context
 + Resource type : menu
  => app/res/menu/context.xmlが追加される

[2-1] app/res/menu/context.xmlをダブルクリックし、「Menu Item」を追加する

デザイン例 / menu

  + contextItem1
  + contextItem2

コード

MainActivity.kt

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.ContextMenu
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    private lateinit var realm: Realm

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // コンテキストメニューを追加したい対象のコンポーネント(今回は「textView」)を指定する
        registerForContextMenu(textView)
    }

    // ********** コンテキストメニュー **********

    // コンテキストメニューの作成
    override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
        super.onCreateContextMenu(menu, v, menuInfo)
        menuInflater.inflate(R.menu.context, menu)
    }

    // コンテキストメニューアイテムが選択された時に呼び出される
    override fun onContextItemSelected(item: MenuItem?): Boolean {
        when (item?.itemId) {
            R.id.contextItem1 -> {
                Toast.makeText(this, "contextItem1をクリック", Toast.LENGTH_SHORT).show()
                return true
            }
            R.id.contextItem2 -> {
                Toast.makeText(this, "contextItem2をクリック", Toast.LENGTH_SHORT).show()
                return true
            }
        }
        return super.onContextItemSelected(item)
    }
}

関連記事

画面コンポーネント / Menu ~ オプションメニュー ~
https://dk521123.hatenablog.com/entry/2013/10/04/234613