Android 潜在的空指针异常。某些布局版本中缺少资源

Android 潜在的空指针异常。某些布局版本中缺少资源,android,kotlin,Android,Kotlin,我正在尝试开发一个应用程序,但我的切换按钮onClick功能不起作用。它表示空指针异常。活动甚至还没有开始。当我将鼠标悬停在代码中的按钮名(coedb)上时,它会显示“潜在的空指针异常。某些布局版本中缺少该资源” 以下是我的xml: <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.co

我正在尝试开发一个应用程序,但我的切换按钮onClick功能不起作用。它表示空指针异常。活动甚至还没有开始。当我将鼠标悬停在代码中的按钮名(coedb)上时,它会显示“潜在的空指针异常。某些布局版本中缺少该资源”

以下是我的xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    tools:context="com.example.savar.swoosh.leagueactivity">

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:scaleType="centerCrop"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/desiredleaguebg"
        android:contentDescription="@string/background_image" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="88dp"
        android:layout_height="29dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="24dp"
        android:scaleType="fitCenter"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.539"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/swooshlogo"
        android:contentDescription="@string/app_logo" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="32dp"
        android:fontFamily="@font/montserrat"
        android:text="@string/desired_league"
        android:textColor="@android:color/white"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView2" />

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="320dp"
        android:layout_height="0dp"
        android:layout_marginEnd="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="33dp"
        android:orientation="vertical"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView4">

        <ToggleButton
            android:id="@+id/manb"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/swoosh_toggle"
            android:onClick="menclick"
            android:text="@string/mens"
            android:textColor="@android:color/white"
            android:textOff="@string/mens"
            android:textOn="@string/mens" />

        <ToggleButton
            android:id="@+id/womenb"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:layout_marginTop="16dp"
            android:background="@drawable/swoosh_toggle"
            android:onClick="woclick"
            android:text="@string/womens"
            android:textColor="@android:color/white"
            android:textOff="@string/womens"
            android:textOn="@string/womens" />

        <ToggleButton
            android:id="@+id/coedb"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/swoosh_toggle"
            android:text="@string/co_ed"
            android:textColor="@android:color/white"
            android:textOff="@string/co_ed"
            android:textOn="@string/co_ed" />
    </LinearLayout>

    <Button
        android:id="@+id/nxt"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginStart="16dp"
        android:background="@drawable/swooshbtn"
        android:fontFamily="@font/montserrat"
        android:onClick="next"
        android:text="@string/next"
        android:textColor="@android:color/white"
        app:layout_constraintBottom_toBottomOf="@+id/imageView3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>
这是我的错误:

 E/AndroidRuntime: FATAL EXCEPTION: main
                      Process: com.example.savar.swoosh, PID: 5402
                      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.savar.swoosh/com.example.savar.swoosh.leagueactivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ToggleButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
                          at android.app.ActivityThread.-wrap11(Unknown Source:0)
                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
                          at android.os.Handler.dispatchMessage(Handler.java:106)
                          at android.os.Looper.loop(Looper.java:164)
                          at android.app.ActivityThread.main(ActivityThread.java:6494)
                          at java.lang.reflect.Method.invoke(Native Method)
                          at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
                       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ToggleButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
                          at com.example.savar.swoosh.leagueactivity.onCreate(leagueactivity.kt:17)
                          at android.app.Activity.performCreate(Activity.java:7009)
                          at android.app.Activity.performCreate(Activity.java:7000)
                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
                          at android.app.ActivityThread.-wrap11(Unknown Source:0) 
                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
                          at android.os.Handler.dispatchMessage(Handler.java:106) 
                          at android.os.Looper.loop(Looper.java:164) 
                          at android.app.ActivityThread.main(ActivityThread.java:6494) 
                          at java.lang.reflect.Method.invoke(Native Method) 
                          at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

我不确定kotlin的正确语法是什么,但是您的button变量没有初始化。 您可能应该这样做:

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

    coedb = findViewById(R.id.coedb)

    coedb.setOnClickListener {
        Toast.makeText(this,"looollll",Toast.LENGTH_LONG).show()
    }
}

如果您为多个
SDK INT
或方向创建了相同的布局,并且没有在所有布局文件中提及视图,例如:
activity\u main.xml(v21)
activity\u main(land)
等等,则会发生此错误。所有布局应包含具有相同ID的所有视图

Kotlin使用“import kotlinx.android.synthetic.main.activity_leagueactivity.*”自动初始化按钮。对于以前的活动,它工作正常,但对于当前的活动,它会显示错误。是否确实已将正确的xml(activity_leagueactivity.xml)附加到问题?它可能只是缺少R.id.coedb。这是线性布局中的最后一个切换按钮。“android:id=“@+id/coedb”(如果这是您所指的)我之所以这样问,是因为您编写的它适用于其他活动,而不是本次活动。因此,我认为您可能使用了错误的xml(或者您使用的xml缺少此id)。我认为这与布局版本有关。我想id工作正常。因为我自定义了按钮,使其具有圆形边框的透明外观。我认为这是否是导致问题的原因。(所有这些都适用于我以前的布局,并在当前布局中造成问题).两种变体:您将布局文件放入错误的res目录,或者在其他res目录中有一个同名的布局文件,但它没有您的按钮
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_leagueactivity)

    coedb = findViewById(R.id.coedb)

    coedb.setOnClickListener {
        Toast.makeText(this,"looollll",Toast.LENGTH_LONG).show()
    }
}