java - Android findViewById 空指针

标签 java android nullpointerexception 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 为空。

最佳答案

您正在对被单击的 View 调用findViewById()。您的按钮没有 edittext 作为其子项。您应该改为查询 Activity View 层次结构:替换

view.findViewById(R.id.editText)

findViewById(R.id.editText)

关于java - Android findViewById 空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48080467/

相关文章:

java - 使用 Tomcat 7 在单独的日志文件中记录 version.jsp 调用

java - Spock通过Maven启动后测试不成功

java - TextView 不会根据 SeekBar 进度自动更新

android - 如何修改 Android 9patch 图片的颜色?

java - OpenIDE 的查找因 Gephi Controller 对象而失败

java - Swing CardLayout 的问题

java - 合并两个 Long 类型的列表并添加到 java 8 中的现有 map

java - 如果我的子步骤文件已经扩展了一个类,如何创建 MasterStep/BaseStep?

Android 文本不会居中对齐

java - 无法从 jar 加载属性