Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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/3/android/214.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
Java 在onCreate()中放置setContentView()的位置?_Java_Android_Android Activity - Fatal编程技术网

Java 在onCreate()中放置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

我是android的初学者,我想知道为什么在定义TextView后放置我的setContentView()时,我的应用程序会崩溃,即

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()之前,该布局在类中是未知的。

我想知道您是否可以帮我解决这个问题。我保证,这不是那种“为我解决这个”的问题。