设置ID后,为什么仍找不到导航视图?

时间:2018-08-30 07:25:19

标签: android kotlin

<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context=".MainActivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout">

<include layout="@layout/main_content"/>
<android.support.design.widget.NavigationView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity = "start"
    android:id="@+id/navigation_view"
    app:headerLayout="@layout/slide_menu_header"
    app:menu="@menu/slide_menu">

</android.support.design.widget.NavigationView>

activity_main.xml 如下所示,当我尝试致电时

navigation_view.setNavigationItemSelectedListener(this@MainActivity::onNavigationItemSelected)

MainActivity 中的android studio总是告诉我

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.NavigationView.setNavigationItemSelectedListener(android.support.design.widget.NavigationView$OnNavigationItemSelectedListener)' on a null object reference

我不知道此错误,因为我给了NavigationView一个ID,该ID为 navigation_view

这是MainActivity.kt代码的一部分

class MainActivity : AppCompatActivity(),NavigationView.OnNavigationItemSelectedListener{
external fun stringFromJNI(): String
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    //hideStatusBar()

    navigation_view.setNavigationItemSelectedListener(this@MainActivity::onNavigationItemSelected)
    setContentView(R.layout.activity_main)
    tb_iv_slide_menu.setOnClickListener { tbIvSlideMenuOnClick() }

}

override fun onNavigationItemSelected(p0: MenuItem): Boolean {
    when (p0.itemId){
        R.id.slide_menu_info -> {
            Toast.makeText(this@MainActivity,"0",Toast.LENGTH_LONG).show()
            drawer_layout.closeDrawer(Gravity.START)}
    }
    return true
}

需要任何帮助

1 个答案:

答案 0 :(得分:4)

致电navigation_view下面的setContentView(R.layout.activity_main)

setContentView(R.layout.activity_main)    
navigation_view.setNavigationItemSelectedListener(this@MainActivity::onNavigationItemSelected)