【问题标题】:Android TextView and null pointer exceptionAndroid TextView 和空指针异常
【发布时间】:2011-01-31 04:39:30
【问题描述】:

为什么

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

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

【问题讨论】:

    标签: android textview


    【解决方案1】:

    如果您传递有效的 id,findViewById 返回 null 的唯一原因是您设置了错误的内容视图(使用 setContentView)或根本没有设置内容视图。

    【讨论】:

    • 感谢您的帖子,但事实并非如此。我在onCreate 中打电话给setContentView
    • 您能分享一下您的整个 oncreate 和 xml 布局吗?
    • 清洁项目似乎已经解决了任何问题。该死的地狱。
    • 我面临同样的问题,但在我的情况下,我没有使用 setContentView,因为它是一个片段,所以我使用 view = inflater.inflate(R.layout.test, container, false);但它给了我错误,不是在 onCreateMethod 中,而是在一个单独的方法中......
    • 非常感谢。如果可以,我会拥抱你,我变得绝望,没有注意,我将错误的布局传递给 setContent。而 (1){ 谢谢 ; }
    【解决方案2】:

    我认为您可能在定义 TextView 后编写了 setContentView(..)。把这些反过来,它应该可以工作。

    变化:

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

    收件人:

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

    【讨论】:

      【解决方案3】:

      你可能没有打电话给setContentView。您只能使用findViewById 来获取已经膨胀的视图元素。

      您也可以使用 layoutinflater 来为视图充气,但这可能不是您想要的。

      【讨论】:

      • 感谢您的帖子,但事实并非如此。我在onCreate 中打电话给setContentView
      • 谢谢。但它不起作用。我希望每个人都停止试图解释,而是让​​我们制作一个我们可以使用的工作示例。我无法测试解释。我不知道在什么上调用 setcontentview。哪个参数?我给你 -1 因为没有什么可使用的。请停止评论并开始解决问题。
      【解决方案4】:

      您确定 TextView 设置在正确的 XML 上吗? 例如,如果您正在创建一个加载自定义 XML 的对话框,要从该 xml 中获取元素,您必须在 dialog.findViewById(R.id.testTextView); 中提及它

      就像 Falmarri 所说,视图必须被夸大。 我知道您通过创建一个新项目解决了这个问题,但仍然想为未来的用户提及它。

      【讨论】:

        【解决方案5】:

        也可能是您在两个文件中定义了活动。例如 layout 和 layout-v21 以及其中一个缺少像 id 这样的信息。所以检查所有活动的布局

        【讨论】:

        • 这是我的问题。谢谢!
        【解决方案6】:

        在我的例子中,布局还没有完成膨胀。通过在尝试访问 TextView 之前添加一个小延迟来解决。

        new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
            @Override
            public void run() {
                TextView test = (TextView) findViewById(R.id.testTextView);
                test.getText();
            }
        }, 100);
        

        【讨论】:

          【解决方案7】:

          我为此苦苦挣扎了一段时间,我意识到,如果您有多个布局文件版本,例如:

          “layout”文件夹中的“activity_one.xml”和“layout - small”文件夹中的一个

          我用于多个电话布局支持,问题是其中一个 TextViews 在两者中,具有完全相同的 ID 和所有内容,但不同之处在于布局中视图层次结构中的一个更高。

          当我将它们更改为在同一个位置时,它起作用了。

          (我知道这已经回答了,但也许这对那里的人有帮助。不过非常罕见。)

          【讨论】:

          • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
          猜你喜欢
          • 2021-05-17
          • 1970-01-01
          • 1970-01-01
          • 2012-04-20
          • 1970-01-01
          • 2013-04-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多