2017-11-11 6 views
2

私はKotlinに引き出しメニューを作成しましたが、このメニュー項目を使用したいと思います。 Javaでは私はonNavigationItemSelectedメソッドを呼び出していましたが、私がKotlinで使用する場合は表示されません。Android Kotlin - onNavigationItemSelectedメソッドを呼び出せません

mToggle = ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close) 
drawerLayout.addDrawerListener(mToggle!!) 
mToggle!!.syncState() 

supportActionBar!!.setDisplayHomeAsUpEnabled(true) 

override fun onOptionsItemSelected(item: MenuItem?): Boolean { 

    if (mToggle!!.onOptionsItemSelected(item)) { 
     return true 
    } 

    return super.onOptionsItemSelected(item) 
} 

は、だから私はこのような何かをしたい:私の活動で

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:id="@+id/nav_home" 
     android:title="Home"/> 

    <item android:id="@+id/nav_sprawdziany" 
     android:title="Sprawdziany"/> 
    <item android:id="@+id/nav_prace" 
     android:title="Prace klasowe"/> 

</menu> 

とコード:ここで

<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:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/drawerLayout" 
    tools:context="com.example.zamknijryjx.liobrus.UserActivity"> 

    <android.support.constraint.ConstraintLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 
      android:id="@+id/imie" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="8dp" 
      android:layout_marginStart="8dp" 
      android:layout_marginTop="40dp" 
      android:text="Imie" 
      android:textSize="50sp" 
      android:textColor="@color/black" 
      app:layout_constraintEnd_toEndOf="parent" 
      app:layout_constraintStart_toStartOf="parent" 
      app:layout_constraintTop_toTopOf="parent" /> 

    </android.support.constraint.ConstraintLayout> 

    <android.support.design.widget.NavigationView 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     app:menu="@menu/navigation_menu" 
     android:layout_gravity="start" 
     app:headerLayout="@layout/navigation_header"> 
    </android.support.design.widget.NavigationView> 

</android.support.v4.widget.DrawerLayout> 

navigation_menu.xmlである:ここに私のコードである場合には、ユーザーのクリックメニュー項目IDがnav_homeの場合、それはトーストになります。ありがとうございました!

答えて

2

あなたのレイアウトファイルにあなたのNavigationView IDを与えることができます:

<android.support.design.widget.NavigationView 
    android:id="@+id/navigationView" 
    ... > 
</android.support.design.widget.NavigationView> 

そして、あなたのUserActivityでそれにリスナーを追加します。

navigationView.setNavigationItemSelectedListener { 
    when (it.itemId) { 
     R.id.nav_home -> { 
      // handle click 
      true 
     } 
     else -> false 
    } 
} 
+0

答えてくれてありがとう、しかし、どのように私は新しい開始することができますこれでの活動は? –

+0

ナビゲーション項目のクリックを処理するブロック内に任意のコードを書くことができます。そこに新しい 'Activity'を開始するコードを書くだけです。どうやってそれを行うのかわからない場合は、最初にAndroidでいくつかの初心者のチュートリアルを見てください。 – zsmb13

関連する問題