更改TextView的文本会抛出NullPointer异常

时间:2015-06-14 15:54:06

标签: java android exception textview

我只是关注Android网站上的基本教程。但是,我试图改变一些事情只是为了好玩。例如,我没有在TextView类的方法onCreate(...)中创建运行时DisplayMessageActivty(如教程中那样),而是定义了静态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 onCreate(...)类的DisplayMessageActivty方法:

@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

我在互联网上搜索过,其他教程中采用的方法看起来非常相似,所以我无法理解我做错了什么。谢谢!

1 个答案:

答案 0 :(得分:2)

内容未设置到视图中,如果您在findviewByid之前执行此操作,setContentView将返回NULL。

移动  setContentView之后findviewByid它会起作用。