Android findViewById空指针[重复]

眼前多少难甘事,自古男儿当自强。这篇文章主要讲述Android findViewById空指针[重复]相关的知识,希望能为你提供帮助。
这个问题在这里已有答案:

  • What is a NullPointerException, and how do I fix it? 12个答案
来自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

【Android findViewById空指针[重复]】只是为了测试我试过并成功了
@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的布局文件。

    推荐阅读