我只是遵循Android网站上的基本教程。但是,我试图改变一些东西只是为了好玩。例如,我不是在DisplayMessageActivty
类的方法onCreate(...)
内创建运行时TextView
(如本教程中所示),而是在XML布局文件中定义了一个静态TextView
,因为我还想显示其他东西(例如,a静态消息以及从主屏幕输入的消息)。所以,DisplayMessageActivty
相应的XML文件中,我定义了TextView
和其他的东西为:更改TextView的文本会抛出NullPointer异常
[...]
<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
类的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);
}
不幸的是,当我按在主要活动我的代码抛出以下异常Send
按钮:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
我在互联网上搜索和其他教程中采用的方法看起来很相似,所以我不明白我做错了什么。谢谢!
'setContentView'在'findViewById'前面,否则你没有小部件可以找到 – Blackbelt
Argh !!!我不知道...非常感谢你。如果你把你的评论写成答案,我可以投票;) –