无法设置TextView的内容 - java.lang.NullPointerException

时间:2015-01-15 18:45:40

标签: android

我尝试进行设置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)

2 个答案:

答案 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...");


}