java - 更改 TextView 的文本会引发 NullPointer 异常

标签 java android exception textview

我只是在学习 Android 网站上的基本教程。但是,我只是为了好玩而尝试更改一些内容。例如,不是在 DisplayMessageActivty 类的方法 onCreate(...) 中创建运行时 TextView(如教程中所示),我在 XML 布局文件中定义了一个静态 TextView,因为我还想显示其他内容(例如,静态消息以及从主屏幕输入的结果消息)。因此,在 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(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);
}

不幸的是,当我在主要 Activity 中按下 Send 按钮时,我的代码抛出以下异常:

java.lang.NullPointerException:尝试在空对象引用上调用虚方法“void android.widget.TextView.setText(java.lang.CharSequence)”

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

最佳答案

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

移动 setContentView BEFORE findviewByid 它将起作用。

关于java - 更改 TextView 的文本会引发 NullPointer 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30831438/

相关文章:

java - 使用DatatypeConverter.parseBase64Binary的异常

java - 重用库类时的包命名

android - Firebase 身份验证有效,但在使用 Google Text to Speech API 时出现错误

java - OpenCV 2.4.1 : UnsatisfiedLinkError

c - 在 C 中是否有调用堆栈转储的函数?

java - 如何动态转换一些东西?

java - 在 GAE 上运行 Glassfish JAX-RS 服务器无法正常工作

android - (this::methodName) 如何在此代码中工作?

java - 尝试获取数据时出现数字格式异常

azure - 自定义错误日志记录 | Azure 监视器日志与应用程序见解