2015-09-29 2 views
-4

Мы сталкиваемся с проблемой с Android-приложением. Существует один класс с именем SingleTon, который расширяет приложение, и мы используем его для менеджера состояний. Когда приложение работает в фоновом режиме и если я открываю push-уведомление Я не могу получить доступ к классу Singleton, потому что o имеет значение null, и поэтому приложение разбивается. То же самое происходит, если приложение находится в режиме ожидания. Здесь я упомянул мой Синглтон класс код:Состояние Singleton недоступно из-за контекста NULL

общественного класса StateManager расширяет применение {
общественности Строка FirstName;

public String LastName; 

private static StateManager instance; 
public static synchronized StateManager getInstance() { 
    return instance; 
}  
public String getFirstName() { 
    return FirstName; 
} 
public void setFirstName(String firstName) { 
    FirstName = firstName; 
} 
public String getLastName() { 
    return LastName; 
} 
public void setLastName(String lastName) { 
    LastName = lastName; 
} 
@Override 
public void onCreate() { 
    super.onCreate(); 
    instance = this;  
    Parse.enableLocalDatastore(this); 
    Parse.initialize(this, "xxxx", "xxxxx");  
    ParseInstallation.getCurrentInstallation().saveInBackground();  
} 

@Override 
public void onTerminate() { 
    instance =this; 
    super.onTerminate(); 
}  
    } 

ответ

0

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

public static StateManager getInstance(){ 
     if(instance== null){ 
      instance= new StateManager(); 
     } 
     return instance; 
    } 
+0

Если я создаю новый экземпляр statemanager, то null в это время. Поэтому я хочу получить доступ к контексту в основной деятельности. Таким образом, я могу получить доступ к этому классу statemanegr в своей основной деятельности. – Csharp

+0

Если экземпляр StateManager имеет значение null, то вы не можете получить доступ к этим методам, он будет генерировать исключение. После этого изменения вы тоже получаете то же самое? –

0

просто поместите эту строку в OnCreate класса Application

экземпляр = новый StateManager();

Смежные вопросы