我尝试进行设置TextView内容的基本操作。我过去曾这样做过(我将此代码基于其他地方运行的代码),但在这种特定情况下,它会导致错误。
我也使用Android Studio。 Intellisence正在收集所有的ID和东西。
我的布局文件activity_status.xml
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="my.package.path.StatusActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cash Machine"
android:id="@+id/button_cash_machine"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:onClick="loadCashOutActivity" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Default"
android:id="@+id/txtStatus"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="64dp" />
</RelativeLayout>
我onCreate
班的StatusActivity
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView v = (TextView) findViewById(R.id.txtStatus);
v.setText("Changed...");
setContentView(R.layout.activity_status);
}
LogCat
错误:
01-15 13:13:27.772 1918-1918/my.package.path E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: my.package.path., PID: 1918
java.lang.RuntimeException: Unable to start activity ComponentInfo{my.package.path/my.package.path.StatusActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
...
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at my.package.path.StatusActivity.onCreate(StatusActivity.java:25)
答案 0 :(得分:3)
你有这个
TextView v = (TextView) findViewById(R.id.txtStatus);
v.setText("Changed...");
setContentView(R.layout.activity_status);
这是错误的,在您致电setContentView
需要看起来像这样
setContentView(R.layout.activity_status);
TextView v = (TextView) findViewById(R.id.txtStatus);
v.setText("Changed...");
答案 1 :(得分:1)
您尝试在setContentView(..)之前设置查找视图。你必须首先调用setContentView(...),然后找到你的视图
将您的代码更改为:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_status);
TextView v = (TextView) findViewById(R.id.txtStatus);
v.setText("Changed...");
}