2014-02-14 2 views
2

Мое приложение получает намерение от службы, которая затем выводит уведомление. Это намерение имеет идентификатор объекта, из которого я хочу извлечь весь объект из моей базы данных, чтобы я мог установить заголовок уведомления и субтитры. Однако мне нужно перейти в контекст к моему dbManager, и я получаю ошибки независимо от того, в каком контексте я пытаюсь.Каков подходящий контекст для использования в приемнике услуг для создания объектов?

Код выглядит следующим образом:

public class ReceiveTransitionsIntentService extends IntentService { 

    private DBManager dbManager; 
    public ReceiveTransitionsIntentService() { 
     super("ReceiveTransitionsIntentService"); 
    } 
    protected void onHandleIntent(Intent intent) { 
     //somewhere 
     sendNotification(..); 
    } 
    private void sendNotification(String transitionType, String ids) { 
     Intent notificationIntent = 
       new Intent(getApplicationContext(),MainActivity.class); 
     ... 
     //have tried with getbaseContext() and this, still failures 
     dbManager = new DBManager(getApplicationContext()); 
     ... 
    } 
} 

Кто-нибудь есть какие-либо идеи о том, что я мог сделать?

Эти ошибки:

новый DBManager (это) -> java.lang.ClassCastException: .ReceiveTransitionsIntentService не может быть приведен к android.app.Activity

новый DBManager (getApplicationContext) -> Java. lang.ClassCastException: android.app.Application не может быть приведен к android.app.Activity

новый DBManager (getBaseContext) -> java.lang.ClassCastException: android.app.Contextimpl не может быть приведен к android.app.activity

+0

Оформить заказ, я думаю, что это поможет. http://stackoverflow.com/questions/987072/using-application-context-everywhere?rq=1 –

ответ

1

Вы получаете следующее:

java.lang.ClassCastException: 
.ReceiveTransitionsIntentService cannot be cast to android.app.Activity 


new DBManager(getApplicationContext) -> 
java.lang.ClassCastException: android.app.Application 
cannot be cast to android.app.Activity 

new DBManager(getBaseContext) -> 
java.lang.ClassCastException: 
android.app.Contextimpl cannot be cast to android.app.activity 

Это просто означает, что вы получаете операцию в параметрах. что ваша функция подписи содержит:

functionName(Activity context); 

Изменить функции на:

functionName(Context context), thus when you pass context, as `this` 

или someOtherActivity.this или getApplicationContext() это не приведет к ошибкам.

+0

О да, в моем DBManager я передал контекст в Activity, так как мне также нужно заняться. Полагаю, мне нужно это исправить. Ошибка при чтении журнала ошибок. – gta0004

+0

И если вы уверены, какие действия вызывают метод, вы можете привести его в соответствие с контекстом ((Activity)), если это действительно необходимо. –

+0

Да, у меня было 'mActivity = (Activity) mContext' в DBManager, которое, я думаю, не сработало бы, если бы это была не моя деятельность. Я изменил свой класс на использование контекста, и он работал так надежно, что не возвращается, чтобы преследовать меня позже. Спасибо за вашу помощь! – gta0004

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

  • Нет связанных вопросов^_^