Android TextView和空指针异常

时间:2011-01-31 04:39:31

标签: android textview

为什么

TextView test = (TextView) findViewById(R.id.testTextView);
test.getText();

生成空指针异常? id是正确的,testTextView在我的XML布局文件中正确声明。

6 个答案:

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