Android findViewById空指针[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android findViewById空指针[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

来自activity_settings.xml

<EditText android:id="@+id/editText" android:text="text" />
<Button android:id="@+id/button" android:text="button"/>

来自MyActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);
    this.findViewById(R.id.button).setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EditText txt = (EditText) view.findViewById(R.id.editText);
                Toast.makeText(view.getContext(),txt.getText(), Toast.LENGTH_SHORT).show();
           }
        });
...

如果我点击我得到的按钮

 java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference

只是为了测试我试过并成功了

@Override
public void onClick(View view) {
    EditText txt = (EditText) view.findViewById(R.id.editText);
    Toast.makeText(view.getContext(),txt.getText(),Toast.LENGTH_SHORT).show();
    }
}

我不明白为什么按钮没问题但editText为空。

答案

你在被点击的findViewById()上调用view。您的按钮没有edittext作为其子项。您应该查询活动视图层次结构:replace

view.findViewById(R.id.editText)

findViewById(R.id.editText)
另一答案

更改

EditText txt = (EditText) view.findViewById(R.id.editText);

EditText txt = (EditText)findViewById(R.id.editText);

您正在查看被单击的视图中的EditText控件 - 这显然是Button。您必须搜索Activity的布局文件。

以上是关于Android findViewById空指针[重复]的主要内容,如果未能解决你的问题,请参考以下文章

android.R.id.home 抛出空指针异常

findViewById() 在与合并标签一起使用时在包含标签上抛出空指针

Android studio ButterKnife8.1.0空指针/相关配置及其简单使用

Android 开发问题

Android:findViewById 给了我错误的指针?

Android列表视图返回null?