android中的findViewById()的NullPointerException

poi*_*our 7 java android nullpointerexception android-edittext android-activity

在下面的代码中,我使用findViewById()在第9/10行获得NullPointerException.
在我的主类中,我只是从这个类中实例化一个对象,使用.getFrom()

public class UserInteraction extends Activity {
EditText etFrom;
int from;
EditText etTill;
int till;

public UserInteraction(){
    etFrom = (EditText)findViewById(R.id.et_from);
    etTill = (EditText)findViewById(R.id.et_till);
}

public int getFrom() {
    String s = etFrom.getText().toString();
    int i = Integer.parseInt(s);
    return i;
}

public int getTill() {
    String s = etTill.getText().toString();
    int i = Integer.parseInt(s);
    return i;
}
Run Code Online (Sandbox Code Playgroud)

是不是在我的主类中设置了contentView ..?可能是什么原因 ?

MBy*_*ByD 17

调用之前,setContentView应该使用适当的布局调用该方法.它通常在方法中调用.findViewByIdonCreate(Bundle savedInstance)

  • 需要注意的重要一点是:在一个Activity的构造函数中,你可以安全地做一些与用户界面相关的信息(确切地说,有****).通常,您应该使用`onCreate`方法来处理通常使用构造函数的所有内容. (5认同)
  • 这样做的原因是`Activity#findViewById`并不神奇,它是一个简单的递归搜索,位于附加到活动当前窗口的视图层次结构中.如果你还没有使用`setContentView`或类似的方法附加任何视图,`findViewById`将返回null,因为没有匹配的视图可供查找. (4认同)