尝试阅读文本字段时的Nullpointerexception - Android

时间:2014-09-24 21:16:56

标签: android nullpointerexception android-edittext

我有一个按钮,其中包含一个在点击时调用的方法。

方法:

public void addToList(View view) {
    System.out.println(1);
    String str = "";
    try{
     str = edit.getText().toString();}
    catch (Exception ex){
        System.out.println(  ex );
    }
    System.out.println(2);
    new QueryInList( ).execute(helper, str);
    System.out.println(3);
    edit.setText(null);
    System.out.println(4);
    //adapter.notifyDataSetChanged();


}

好吧,我总是得到异常,这是一个Nullpointerexception。

这让我非常困惑,因为编辑是初学者:

在课堂上声明:

private EditText edit;

此外,它在onCreate中初始化:

   protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    edit = (EditText)findViewById(R.id.textfield);
    setContentView(R.layout.activity_view);
    ......}

所以我想知道为什么我总是得到一个Nullpointer?

2 个答案:

答案 0 :(得分:2)

在查找项目之前设置内容视图。在设置内容视图之前,您无法查找项目。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view);
edit = (EditText)findViewById(R.id.textfield);

......}

答案 1 :(得分:1)

edit = (EditText)findViewById(R.id.textfield);声明之后移动setContentView

以下是来自另一个question的用户@Squonk的一个很好的解释:

  

setContentView(...)表示“布局通胀”。这意味着它解析相关文件中的XML(在您的情况下为 main.xml )并创建其中所有UI元素的实例。然后它将该视图附加到Activity。当您致电findViewById(...)时,它不会直接引用您的 main.xml - 而是引用附加到Activity的内容视图,换言之,setContentView(...) < / p>