Почему следующий метод выбрасывает NPE,бросать Исключение нулевого указателя
public ActivityOne extends Activity{
DataManager dtMan = new DataManager(this)
public onCreate(){
...some source code here...
dtMan.check();
}
}
public class DataManager(){
private Context myContext;
public DataManager (Context context){
myContext = context;
}
Helper helper = new Helper(this);
public boolean check(){
helper.open();
...some source code here...
}
}
Когда я просмотреть LogCat; Я получаю исключение java.null.pointer, так что я сделал что-то вроде
public class DataManager(){
private Context myContext;
public DataManager (Context context){
myContext = context;
}
public boolean check(Context context){
**Helper helper = new Helper(context);**
helper.open();
...some source code here...
}
}
И это сработало, так что разница между этими двумя DataManager в перспективе/Android программирования Java, таким образом, этот подход, если я правильно понял должен реплицировать как следующие:
public class DataManager(){
private Context myContext;
public DataManager (Context context){
myContext = context;
}
public boolean check(Context context){
**Helper helper = new Helper(context);**
helper.open();
...some source code here...
}
public boolean check2(Context context){
**Helper helper = new Helper(context);**
helper.open();
...some source code here...
}
public boolean check3(Context context){
**Helper helper = new Helper(context);**
helper.open();
...some source code here...
}
}
Значение Я просто не могу объявить вспомогательный класс один раз и использовать его в любом месте класса вызова, я забыл некоторые основы? Просьба уточнить.
Будет ли контекст также приводить к утечкам памяти ?, если да, то как я его исправлю?
@EDIT:
Ну я забыл включить вспомогательный класс
общественного класса Helper { частный контекст myContext;
public Helper(Context context){
myContext = context;
}
public void open(){
//do stuff here
}
}
интересного 'нового помощник (это),' 'где this' является экземпляром 'DataManager', и кажется, что Helper принимает контекст как paramater ... это должно даже не компилироваться ... – Selvin
Контекст' this' не инициализирован! запустите свой Datamanager в onCreate, и все будет в порядке –
@ A.S. на самом деле enogh будет инициализацией хелпера перемещения в конструктор 'DataManager' ... – Selvin