为什么
TextView test = (TextView) findViewById(R.id.testTextView);
test.getText();
生成空指针异常? id是正确的,testTextView在我的XML布局文件中正确声明。
答案 0 :(得分:26)
如果传递有效ID,findViewById
返回null的唯一原因是您要么设置错误的内容视图(使用setContentView
),要么根本不设置内容视图。< / p>
答案 1 :(得分:2)
您可能没有致电setContentView
。您只能使用findViewById
来获取已经夸大的观看元素。
你也可以使用layoutinflater给视图充气,但这可能不是你想要的。
答案 2 :(得分:2)
您确定TextView是否设置在正确的XML上?
例如,如果您要创建一个加载自定义XML的Dialog,要从该xml中获取元素,您必须在dialog.findViewById(R.id.testTextView);
答案 3 :(得分:2)
我认为您可能在定义TextView后编写了setContentView(..)。反转这些,它应该工作。
变化:
TextView test = (TextView) findViewById(R.id.testTextView);
.
.
setContetView(..)
要:
setContetView(..)
.
.
TextView test = (TextView) findViewById(R.id.testTextView);
答案 4 :(得分:0)
也可以在两个文件中定义活动。例如,布局和布局-v21以及其中一个上缺少某些信息。因此,请检查所有活动的布局
答案 5 :(得分:0)
就我而言,布局还没有完成膨胀。通过在尝试访问 TextView 之前添加一个小的延迟来解决。
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
TextView test = (TextView) findViewById(R.id.testTextView);
test.getText();
}
}, 100);