Java 在onCreate()中放置setContentView()的位置?
我是android的初学者,我想知道为什么在定义TextView后放置我的setContentView()时,我的应用程序会崩溃,即Java 在onCreate()中放置setContentView()的位置?,java,android,android-activity,Java,Android,Android Activity,我是android的初学者,我想知道为什么在定义TextView后放置我的setContentView()时,我的应用程序会崩溃,即 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv=(TextView) findViewById(R.id.tv); Linkify.addLinks(tv, Linkify.WEB_URL
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv=(TextView) findViewById(R.id.tv);
Linkify.addLinks(tv, Linkify.WEB_URLS|Linkify.EMAIL_ADDRESSES|
Linkify.PHONE_NUMBERS);
setContentView(R.layout.activity_main); //After TextView
}
但是当我在定义TextView之前放置我的setContentView()时,我的应用程序运行良好
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //Before TextView
TextView tv=(TextView) findViewById(R.id.tv);
Linkify.addLinks(tv, Linkify.WEB_URLS|Linkify.EMAIL_ADDRESSES|
Linkify.PHONE_NUMBERS);
}
为什么会这样&以及在之前添加setContentView()如何使
区别
setContentView()
按字面意思设置活动的视图。如果您尝试执行类似TextView tv=(TextView)findviewbyd(R.id.tv)的操作代码>,则没有要查找的视图,因为您尚未设置视图,因此应用程序崩溃。这就是为什么您应该在尝试访问视图之前放置setContentView()
。您可以在setContentView()
方法之前执行所需的任何代码,只要它不引用尚未设置的视图(部分)
由于tv变量引用视图的内容,因此无法执行 当您在声明TextView后定义setContentView()时,您犯了错误,因为您在TextView中初始化的对象Id包含在该布局中,在执行seConteView()之前,该布局在类中是未知的。我想知道您是否可以帮我解决这个问题。我保证,这不是那种“为我解决这个”的问题。