2015-06-14 62 views
1

我只是遵循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

我在互联网上搜索和其他教程中采用的方法看起来很相似,所以我不明白我做错了什么。谢谢!

+1

'setContentView'在'findViewById'前面,否则你没有小部件可以找到 – Blackbelt

+0

Argh !!!我不知道...非常感谢你。如果你把你的评论写成答案,我可以投票;) –

回答

2

内容没有设置到视图中,如果你这样做,findviewByid将返回NULL setContentView

移动 setContentView之前findviewByid它会工作。