TextView.setText(Android)正在导致崩溃。。知道为什么吗?

TextView.setText(Android)正在导致崩溃。。知道为什么吗?,android,string,textview,settext,Android,String,Textview,Settext,尝试开始Android开发,并使用TextView做一些基础工作 出于某种原因,TextView的setText()方法给我带来了巨大的问题。。下面是我的代码的简化版本,以说明我的意思: package com.example.testapp; import android.os.Bundle; import android.app.Activity; import android.widget.TextView; public class MainActivity extends Acti

尝试开始Android开发,并使用TextView做一些基础工作

出于某种原因,TextView的setText()方法给我带来了巨大的问题。。下面是我的代码的简化版本,以说明我的意思:

package com.example.testapp;

import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;

public class MainActivity extends Activity {

    TextView text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        text = (TextView) findViewById(R.id.text1);  
        setContentView(R.layout.activity_main);
        text.setText("literally anything");
    }
}
这会导致撞车,我不明白为什么。。如果我在onCreate中创建TextView,它工作得很好,但是如果我在它之外创建它,它就不工作了。。为什么呢?行“TextView text;”还没有执行吗

谢谢

切换这两条线路

text = (TextView) findViewById(R.id.text1);  
    setContentView(R.layout.activity_main);

您需要先设置内容

在初始化TextView之前需要调用setContentView(),以便您的活动可以访问所有布局组件

setContentView(R.layout.activity_main);
text = (TextView) findViewById(R.id.text1);  

text.setText("literally anything");
从文档:

onCreate(Bundle)是初始化活动的地方。最 重要的是,这里通常使用 布局资源定义您的UI,并使用findViewById(int)来 检索UI中需要与之交互的小部件 以编程方式

因此,这意味着如果要在布局中引用视图,必须首先设置内容视图,然后调用findViewById方法引用定义活动UI的布局资源的子视图

如果“字面上的任何东西”是一个变量(通常可能是这样),请确保它没有抛出NullPointerException。我自己也一直有这个问题。我把它改成:

    text = (TextView) findViewById(R.id.text1);  
    setContentView(R.layout.activity_main);
    try {
         text.setText("literally anything");
    } catch (NullPointerException e) {
         // Do something
    }
异常可能非常有用,所以如果您是一名初级程序员,我建议您尽快将异常处理列在要学习的内容列表中

    text = (TextView) findViewById(R.id.text1);  
    setContentView(R.layout.activity_main);
    try {
         text.setText("literally anything");
    } catch (NullPointerException e) {
         // Do something
    }