前提・実現したいこと
Navigationdrawer の navigationveiw の itemをクリックした際のアクションを起こしたいです。
今はひとまずToastを表示するコードを書いています。
現状、activity上に配置したボタンをタップするとNavigationViewが左から開き、設定した item は表示するようにしています。 しかし、itemをタッチした時に反応がなく困っています。
onNavigationItemSelectedの中にブレークポイントを置いてみると、itemをタップした時に反応がないのでそもそもリスナーの設定が上手くいっていないのかと考えています。
itemのタッチ検知を実現するには、navigationview.setNavigationItemSelectedListener()を実装すればいいと考えているのですが間違えているでしょうか?
気づいた点などありましたらご連絡頂けると幸いです。
よろしくお願いいたします。
andriod studio 3.3.2 を使っています。
言語はKotlinです。
発生している問題・エラーメッセージ
コード
エラーメッセージ
ソースコード
該当のソースコード
-----main.activity.xml---------------------------------------------------------
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:fitsSystemWindows="true" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorPrimaryDark">
`<android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="left" android:fitsSystemWindows="true" android:layout_marginTop="30dp" app:headerLayout="@layout/nav_header_main" app:menu="@menu/navigation_item" android:background="@drawable/pic_category_bg"> </android.support.design.widget.NavigationView>`
----navigation_item.xml---------------------------------------------------------
`<?xml version="1.0" encoding="utf-8"?>
-------mainActivity.kt の一部---------------------------------------------------
・ onCreate() 内の記述
//ボタン押下でnavigationviewの表示
button6.setOnClickListener { nav_view.setBackgroundResource(R.drawable.test) this.drawer_layout.openDrawer(nav_view) } //navigationviewのリスナー設定 nav_view.setNavigationItemSelectedListener(this)
・ setNavigationItemSelectedListenerの実装内容
override fun onNavigationItemSelected(item: android.view.MenuItem): Boolean { when (item.itemId) { R.id.navigation_home -> Toast toast = Toast.makeText(this, message, Toast.LENGTH_LONG); R.id.navigation_dashboard -> Toast toast = Toast.makeText(this, message, Toast.LENGTH_LONG); R.id.navigation_notifications -> Toast toast = Toast.makeText(this, message, Toast.LENGTH_LONG); } drawer_layout.closeDrawer(Gravity.START) return true }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー