更改 TextView 的文本会引发 NullPointer 异常
Changing text of a TextView throws NullPointer Exception
我只是在学习 Android 网站上的基本教程。但是,我只是为了好玩而尝试更改一些内容。例如,我没有在 DisplayMessageActivty
class 的方法 onCreate(...)
中创建运行时 TextView
(如教程中所示),而是定义了一个静态 TextView
在 XML 布局文件中,因为我还想显示其他内容(例如,静态消息以及从主屏幕输入的结果消息)。因此,在 DisplayMessageActivty
的相应 XML 文件中,我将 TextView
和其他内容定义为:
[...]
<TextView android:id="@+id/dynamic_msg"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="ciao"
android:textSize="40dp"
android:layout_below="@id/static_msg"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/times" />
[...]
然后,我通过以下方式访问 TextView
(DisplayMessageActivty
class 的 onCreate(...)
方法):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the message from the intent
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
// HERE I WANT TO CHANGE THE CONTENT OF THE TEXTVIEW
TextView dynamicText = (TextView) findViewById(R.id.dynamic_msg);
dynamicText.setText(message);
setContentView(R.layout.activity_display_message);
// Up button
getActionBar().setDisplayHomeAsUpEnabled(true);
}
不幸的是,当我在主 activity 中按下 Send
按钮时,我的代码抛出以下异常:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
我在网上搜索了一下,其他教程采用的方法看起来很相似,所以我不明白我做错了什么。谢谢!
内容未设置到视图中,如果您在 setContentView
.
之前设置,findviewByid
将 return NULL
移动
setContentView
在 findviewByid
之前它会起作用。
我只是在学习 Android 网站上的基本教程。但是,我只是为了好玩而尝试更改一些内容。例如,我没有在 DisplayMessageActivty
class 的方法 onCreate(...)
中创建运行时 TextView
(如教程中所示),而是定义了一个静态 TextView
在 XML 布局文件中,因为我还想显示其他内容(例如,静态消息以及从主屏幕输入的结果消息)。因此,在 DisplayMessageActivty
的相应 XML 文件中,我将 TextView
和其他内容定义为:
[...]
<TextView android:id="@+id/dynamic_msg"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="ciao"
android:textSize="40dp"
android:layout_below="@id/static_msg"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/times" />
[...]
然后,我通过以下方式访问 TextView
(DisplayMessageActivty
class 的 onCreate(...)
方法):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the message from the intent
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
// HERE I WANT TO CHANGE THE CONTENT OF THE TEXTVIEW
TextView dynamicText = (TextView) findViewById(R.id.dynamic_msg);
dynamicText.setText(message);
setContentView(R.layout.activity_display_message);
// Up button
getActionBar().setDisplayHomeAsUpEnabled(true);
}
不幸的是,当我在主 activity 中按下 Send
按钮时,我的代码抛出以下异常:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
我在网上搜索了一下,其他教程采用的方法看起来很相似,所以我不明白我做错了什么。谢谢!
内容未设置到视图中,如果您在 setContentView
.
findviewByid
将 return NULL
移动
setContentView
在 findviewByid
之前它会起作用。