NullPointerException на findViewById () в Android - PullRequest
7 голосов
/ 22 мая 2011

В следующем коде я получаю исключение NullPointerException в строках 9/10 с помощью findViewById ().
В моем основном классе я только что создал объект из этого класса, чтобы использовать .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;
}

Это то, что contentView установлен в моем основном классе?В чем может быть причина?

Ответы [ 3 ]

17 голосов
/ 22 мая 2011

Метод setContentView должен вызываться с соответствующей компоновкой до вызова findViewById. Обычно вызывается в onCreate(Bundle savedInstance) методе.

2 голосов
/ 22 мая 2011

Вы должны вызывать его из метода onCreate вашей Деятельности, так как ресурсы не будут доступны до этого момента.

Таким образом, расширяя ответ MByD, в вашем методе onCreate сначала вызовите setContentView (), а затем findViewById ().

1 голос
/ 22 мая 2011

Сначала вы должны вызвать setContentView (int layout) , чтобы установить Содержимое вашей Деятельности, а затем вы можете получить ваши Представления (findViewById (int id));

Итак, ваша активность будет такой:

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

public void onCreate(Bundle savedInstance{
   super.onCreate(saveInstance);
   this.setContentView(R.layout.main);

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

}

...