我只是遵循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 !!!我不知道...非常感謝你。如果你把你的評論寫成答案,我可以投票;) –