我是Android开发的新手。我的应用程序编译完全正常(没有错误,没有警告),但它在启动时崩溃。我已经将崩溃的原因诊断为NullPointerException,并且我发现如果根据此声明删除TextView output = (TextView) findViewById(R.id.outputbox);
以及所有行,则应用程序启动正常。我做过研究(Stack Exchange上下都有,以及大约5页的Google搜索结果),我发现的解决方案都没有,这就是我提出这个问题的原因。我在setContentView(R.layout.activity_main);
之前运行了TextView output = (TextView) findViewById(R.id.outputbox);
,并在activity_main.xml中声明了outputbox
。这不是现有问题的重复,因为其他问题的答案并没有解决我的问题。
答案 0 :(得分:0)
很可能你的变量output
的声明和初始化在类中。这不会起作用。只有在调用findViewById
方法后,方法setContentView
才会起作用。这就是为什么你必须在类中声明你的变量,但是在onCreate
方法之后立即在方法setContentView
中初始化它:
public class MainActivity extends AppCompatActivity {
TextView output;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
output = (TextView) findViewById(R.id.outputbox)
}
}
方法findViewById
在xml中搜索您的组件。为此,您必须指出此Activity将使用的xml文件。这是在setContentView(R.layout.activity_main);
命令中完成的。这是一个常见的错误,所以不用担心:)