Sea*_*ene 3 android textview assign
大家好,我是android开发的新手.现在我有一个自己无法解决的问题.下面的代码有什么问题(特别是代码中标记的行)?
MainActivity.java:
package com.amaker.ch02.app;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private TextView displayTextView = (TextView)findViewById(R.id.DisplayTextView); <--Possibly this line
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
displayTextView.setText("change in the code");
}
}
Run Code Online (Sandbox Code Playgroud)
运行,我在AVD中收到一条消息:应用程序意外停止.请再试一次.但是如果我在声明后不立即分配displayTextView,我会改变代码如下,然后一切顺利.
package com.amaker.ch02.app;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private TextView displayTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
displayTextView = (TextView)findViewById(R.id.DisplayTextView);
displayTextView.setText("change in the code");
}
}
Run Code Online (Sandbox Code Playgroud)
为什么?这两个代码有什么不同吗?
Ted*_*opp 10
在您调用之前,TextView不是活动视图层次结构的一部分setContentView(R.layout.main).当您声明变量时,如下所示:
private TextView displayTextView = (TextView)findViewById(R.id.DisplayTextView);
Run Code Online (Sandbox Code Playgroud)
该视图尚不存在,因此displayTextView设置为null.然后你得到一个NullPointerException当您尝试调用setText()在onCreate().