Kotlin:由于textView,Android应用程序意外停止

这里是一个简单的代码,我正在运行

class Second : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) //val intent = intent.getStringExtra("textValue").toString() val text: TextView //text = findViewById(R.id.textView) as TextView // this statement //text.text = "New Text" setContentView(R.layout.second) } } 

这是textView代码

  

现在,当我取消注释textView代码的应用程序停止工作,并没有这些行的作品可能是什么原因?

在布局设置之前调用findViewById ,将setContentView移动到函数的开头,如下所示:

 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.second) //val intent = intent.getStringExtra("textValue").toString() val text: TextView text = findViewById(R.id.textView) as TextView // this statement text.text = "New Text" } 

如上所述,在super.onCreate之后移动setContentView ,否则将没有附加到activity XML布局来查找视图,并且您希望尽快调用setContentView以减少布局初始化延迟

 class Second : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.second) // ^^^^^ should be called first to find view from layout //val intent = intent.getStringExtra("textValue").toString() val text: TextView text = findViewById(R.id.textView) as TextView // this statement text.text = "New Text" } } 

换句话说,在设置布局之后,使您的Android小部件实例化/初始化,setContentView()。 尽管我强烈建议您使用Kotlin Android Extensions插件来保持潜在的小部件错误和代码最小化。