Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;findViewById不能为null“;kotlin android中的错误_Android_Xml_Android Studio_Kotlin_Spinner - Fatal编程技术网

&引用;findViewById不能为null“;kotlin android中的错误

&引用;findViewById不能为null“;kotlin android中的错误,android,xml,android-studio,kotlin,spinner,Android,Xml,Android Studio,Kotlin,Spinner,在这个活动中,我在kotlin中使用findViewById为xml文件中的三个微调器视图获取了三个变量。 每当我运行构建项目时,它就会成功构建,但每当我进入此活动时,应用程序就会停止并关闭。“运行”日志显示以下错误: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sahil.randoms/com.sahil.randoms.activity_name_gender}: java.lang.Ille

在这个活动中,我在kotlin中使用findViewById为xml文件中的三个微调器视图获取了三个变量。 每当我运行构建项目时,它就会成功构建,但每当我进入此活动时,应用程序就会停止并关闭。“运行”日志显示以下错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sahil.randoms/com.sahil.randoms.activity_name_gender}: java.lang.IllegalStateException: findViewById(R.id.newSpin) must not be null
每当我创建像这样的第三个微调器时,就会发生这种情况。 但只有两个纺纱机才能完美运行

以下是kotlin文件:

package com.sahil.randoms

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.Spinner

class activity_name_gender : AppCompatActivity() {

    lateinit var spnGender: Spinner
    lateinit var spnAlphabet: Spinner
    lateinit var newSpin: Spinner

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

        spnGender=findViewById(R.id.spnGender)
        spnAlphabet=findViewById(R.id.spnNation)
        newSpin= findViewById(R.id.newSpin)

        val Gender= arrayOf("Boy","Girl")
        val adapter1=ArrayAdapter(this, android.R.layout.simple_spinner_item ,Gender)
        adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        spnGender.adapter=adapter1


        val Nation= arrayOf("Hindu","Muslim","Sikh","Christian")
        val adapter2: ArrayAdapter<String> = ArrayAdapter(this@activity_name_gender,android.R.layout.simple_spinner_item,Nation)
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        spnAlphabet.adapter= adapter2


        val new= arrayOf("A","B","C","D","E")
        val adapter3: ArrayAdapter<String> = ArrayAdapter(this@activity_name_gender,android.R.layout.simple_spinner_item,new)
        adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        newSpin.adapter= adapter3

    }
}
package com.sahil.randoms
导入androidx.appcompat.app.appcompat活动
导入android.os.Bundle
导入android.widget.ArrayAdapter
导入android.widget.Spinner
班级活动\姓名\性别:AppCompatActivity(){
lateinit变量spnGender:微调器
lateinit var spnAlphabet:微调器
lateinit var newSpin:微调器
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity\u name\u性别)
spnGender=findviewbyd(R.id.spnGender)
spnAlphabet=findViewById(R.id.spnNation)
newSpin=findviewbyd(R.id.newSpin)
val性别=排列(“男孩”、“女孩”)
val adapter1=ArrayAdapter(这个,android.R.layout.simple\u微调器项目,性别)
adapter1.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项)
spnGender.适配器=适配器1
val Nation=arrayOf(“印度教”、“穆斯林”、“锡克教”、“基督教”)
val适配器2:ArrayAdapter=ArrayAdapter(this@activity_name_gender,android.R.layout.simple\u微调器\u项目,国家)
adapter2.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项)
spnAlphabet.adapter=适配器2
val new=排列(“A”、“B”、“C”、“D”、“E”)
val适配器3:ArrayAdapter=ArrayAdapter(this@activity_name_gender,android.R.layout.simple\u微调器\u项目,新建)
adapter3.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项)
newSpin.adapter=adapter3
}
}
xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".activity_name_gender">

    <TextView
        android:id="@+id/txtGender"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:padding="10dp"
        android:textSize="20sp"
        android:background="@drawable/background"
        android:text="Select The Gender"
        android:textAlignment="center"
        android:textColor="#0e2896"
        android:textStyle="bold"/>
    <Spinner
        android:id="@+id/spnGender"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:dropDownWidth="100dp"
        android:forceHasOverlappingRendering="false"
        android:layout_below="@id/txtGender"
        android:layout_centerHorizontal="true"
        android:textAlignment="center"
        android:background="@drawable/background"
        />
    <TextView
        android:id="@+id/txtNation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/spnGender"
        android:layout_marginTop="100dp"
        android:textSize="20sp"
        android:padding="10dp"
        android:background="@drawable/background"
        android:text="Select The Nationality"
        android:textAlignment="center"
        android:textColor="#0e2896"
        android:textStyle="bold"/>
    <Spinner
        android:id="@+id/spnNation"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:dropDownWidth="100dp"
        android:textAlignment="center"
        android:layout_below="@id/txtNation"
        android:layout_centerHorizontal="true"
        android:background="@drawable/background"
        />
    <Spinner
        android:id="@+id/newSpin"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="70dp"
        android:dropDownWidth="100dp"
        android:textAlignment="center"
        android:layout_below="@id/spnNation"
        android:layout_centerHorizontal="true"
        android:background="@drawable/background"
        />

</RelativeLayout>

请帮忙。。
提前感谢:)

如果您使用Kotlin进行编码,则不必使用
findViewById
。请尝试使用
synthetics
,而不要使用此选项。在
build.gradle
文件中,在
apply plugin:'kotlin android extensions'
下面添加这一行
apply plugin:'kotlin android'
。在此之后,您将能够通过视图id作为变量引用视图。例如,您可以将
spnGender
synthetic
导入一起使用,而不使用此行
spnGender=findViewById(R.id.spnGender)
。欲了解更多详细信息,请阅读。

首先,在kotlin中,您不必通过其id查找视图,视图会从活动/片段中定义的布局自动绑定,只需在类中直接获取视图id,如下所示

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

        val Gender= arrayOf("Boy","Girl")
        val adapter1=ArrayAdapter(this, android.R.layout.simple_spinner_item ,Gender)
        adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        spnGender.adapter=adapter1


        val Nation= arrayOf("Hindu","Muslim","Sikh","Christian")
        val adapter2: ArrayAdapter<String> = ArrayAdapter(this@activity_name_gender,android.R.layout.simple_spinner_item,Nation)
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        spnNation.adapter= adapter2


        val new= arrayOf("A","B","C","D","E")
        val adapter3: ArrayAdapter<String> = ArrayAdapter(this@activity_name_gender,android.R.layout.simple_spinner_item,new)
        adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        newSpin.adapter= adapter3

    }
override-fun-onCreate(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity\u name\u性别)
val性别=排列(“男孩”、“女孩”)
val adapter1=ArrayAdapter(这个,android.R.layout.simple\u微调器项目,性别)
adapter1.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项)
spnGender.适配器=适配器1
val Nation=arrayOf(“印度教”、“穆斯林”、“锡克教”、“基督教”)
val适配器2:ArrayAdapter=ArrayAdapter(this@activity_name_gender,android.R.layout.simple\u微调器\u项目,国家)
adapter2.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项)
spnNation.adapter=适配器2
val new=排列(“A”、“B”、“C”、“D”、“E”)
val适配器3:ArrayAdapter=ArrayAdapter(this@activity_name_gender,android.R.layout.simple\u微调器\u项目,新建)
adapter3.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项)
newSpin.adapter=adapter3
}
其次,使用推荐的命名约定,活动名称应该类似于ActivityNameGender,xml名称也可以

最后,它会像

class ActivityNameGender: AppCompatActivity() {

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

        val Gender= arrayOf("Boy","Girl")
        val adapter1=ArrayAdapter(this, android.R.layout.simple_spinner_item ,Gender)
        adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        spnGender.adapter=adapter1


        val Nation= arrayOf("Hindu","Muslim","Sikh","Christian")
        val adapter2: ArrayAdapter<String> = ArrayAdapter(this@activity_name_gender,android.R.layout.simple_spinner_item,Nation)
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        spnNation.adapter= adapter2


        val new= arrayOf("A","B","C","D","E")
        val adapter3: ArrayAdapter<String> = ArrayAdapter(this@activity_name_gender,android.R.layout.simple_spinner_item,new)
        adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        newSpin.adapter= adapter3

    }
}
class ActivityName性别:AppCompativeActivity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity\u name\u性别)
val性别=排列(“男孩”、“女孩”)
val adapter1=ArrayAdapter(这个,android.R.layout.simple\u微调器项目,性别)
adapter1.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项)
spnGender.适配器=适配器1
val Nation=arrayOf(“印度教”、“穆斯林”、“锡克教”、“基督教”)
val适配器2:ArrayAdapter=ArrayAdapter(this@activity_name_gender,android.R.layout.simple\u微调器\u项目,国家)
adapter2.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项)
spnNation.adapter=适配器2
val new=排列(“A”、“B”、“C”、“D”、“E”)
val适配器3:ArrayAdapter=ArrayAdapter(this@activity_name_gender,android.R.layout.simple\u微调器\u项目,新建)
adapter3.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项)
newSpin.adapter=adapter3
}
}

希望找到问题的答案:)

如果您使用
setContentView
扩展正确的布局文件,那么您发布的代码中的所有内容看起来都很好-其中包含一个具有该ID的视图,因此
findViewById
不应返回null。尝试运行
Build
菜单中的
Clean
,或者如果这不起作用,
File
菜单中的
Invalidate Caches/Restart
-有时
R
文件在考虑您的意见后会对ID产生混淆,我尝试过,但仍然显示异常:java.lang.RuntimeException:无法启动activity ComponentInfo{com.sahil.randoms/com.sahil.randoms.activity_name_gender}:java.lang.IllegalStateException:this.newSpin不能为空这是第三个变量,即newSpin。如果没有这个变量,我不知道会发生什么其他两个变量正在为