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插件来保持潜在的小部件错误和代码最小化。