Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Turn96
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 82
#1

Notiffic из класса - Программирование Android

31.08.2015, 04:46. Просмотров 421. Ответов 10
Метки нет (Все метки)

здравствуйте, есть такой вопрос.
Есть сервис который каждую минуту запускает класс который обращается на сервер и при получение инфы запускает класс с уведомление
Service:
Java
1
2
Context con = getApplicationContext();
api.get_notif(con);
Api:
Java
1
2
 notif = new Notiffic_manager(con);
                notif.sendNotif("Уведомление",dataJson.getString("message"));
Notiffic_manager:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Notiffic_manager {
    Context ac;
    NotificationManager nm;
    Notiffic_manager(Context ac){
        this.ac = ac;
    }
 
    void sendNotif(String title,String text) {
        nm = (NotificationManager)ac.getSystemService(ac.NOTIFICATION_SERVICE);
        // 1-я часть
        Notification notif = new Notification(R.drawable.title_logo, "Text in status bar",
                System.currentTimeMillis());
 
        // 3-я часть
        Intent intent = new Intent(ac, main.class);
        // intent.putExtra(MainActivity.FILE_NAME, "somefile");
        PendingIntent pIntent = PendingIntent.getActivity(ac, 0, intent, 0);
 
        // 2-я часть
        notif.setLatestEventInfo(ac, title, text, pIntent);
 
        // ставим флаг, чтобы уведомление пропало после нажатия
        notif.flags |= Notification.FLAG_AUTO_CANCEL;
 
        // отправляем
        nm.notify(1, notif);
    }
}

при запуске ошибки:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
08-31 11:38:50.954: E/AndroidRuntime(20826): FATAL EXCEPTION: main
08-31 11:38:50.954: E/AndroidRuntime(20826): Process: com.t.k.t, PID: 20826
08-31 11:38:50.954: E/AndroidRuntime(20826): java.lang.RuntimeException: Unable to instantiate service com.t.k.t.Notiff: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
08-31 11:38:50.954: E/AndroidRuntime(20826):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:2746)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at android.app.ActivityThread.access$1800(ActivityThread.java:151)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1386)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at android.os.Handler.dispatchMessage(Handler.java:102)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at android.os.Looper.loop(Looper.java:135)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at android.app.ActivityThread.main(ActivityThread.java:5254)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at java.lang.reflect.Method.invoke(Native Method)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at java.lang.reflect.Method.invoke(Method.java:372)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
08-31 11:38:50.954: E/AndroidRuntime(20826): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
08-31 11:38:50.954: E/AndroidRuntime(20826):    at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:106)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at com.t.k.t.Notiff.<init>(Notiff.java:60)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at java.lang.reflect.Constructor.newInstance(Native Method)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at java.lang.Class.newInstance(Class.java:1606)
08-31 11:38:50.954: E/AndroidRuntime(20826):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:2743)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2015, 04:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Notiffic из класса (Программирование Android):

Класс: Хочу из класса WorkFiles получить доступ к функционалу класса WorkDB. - Программирование Android
Есть 3 класса: MainActivity, WorkDB и WorkFiles. Хочу из класса WorkFiles получить доступ к функционалу класса WorkDB. Файл...

Как изменить Textview из другого класса (класса адаптера RecyclerView) - Программирование Android
У меня есть список RecyclerView тоесть этот файл Basket и файл что реализует cardwiew BasketAdapter. как мне изменить TextView allPrice из...

В учебном заведении три компьютерных класса. Ввести площадь каждого класса и количество компьютеров в нем. Для каждого класса вывести сообщение наруше - Pascal ABC
В учебном заведении три компьютерных класса. Ввести площадь каждого класса и количество компьютеров в нем. Для каждого класса вывести...

Как получить private переменную класса, функцей членом другого класса - C++
Игра змейка: Есть класс поле в котором содержится размеры поля: class field { private: int FIELD_START; int...

внук родительского класса не может работать с полями дедовского класса; почему? - C++
Не всё так просто на самом деле. Непонятно, какую роль во всём этом играют шаблоны. Но к делу. Вот код: class base { public: base...

Создать для класса виртуальный метод, возвращающий уникальный идентификатор класса - C++
В курсаче по ООП сказано создать для класса виртуальный метод,возвращающий уникальный идентификатор класса. Вопрос в том, что это такое?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
31.08.2015, 08:48 #2
Проблема с контекстом, con == null?
0
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 932
31.08.2015, 09:19 #3
Советую при работе с сервисом и активити иметь класс наследник Application реализующий Singleton и уже оттуда брать контекст, если вам интересно, могу показать пример.
0
TheCollapse
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 47
Завершенные тесты: 1
31.08.2015, 11:01 #4
REALIST07, мне итересно, могу ли я рассчитывать на ваш пример. Буду очень благодарен...
0
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 932
31.08.2015, 19:24 #5
Создаете класс Singlton и наследуете Application, создаете статическое приватное поле и соответственно публичный метод доступа и в onCreate в вашем классе производите инициализацию, вот как примерно выглядит:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class App extends Application {
 
    private static Context context;
  ...
    public static Context getAppContext()
    {
        return App.context;
    }
...
   
    @Override
    public void onCreate()
    {
        super.onCreate();
        App.context = getApplicationContext();
 
}
Внимание!Не создавайте статических переменных на Context в Activity! Это может плохо кончится
0
Turn96
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 82
05.09.2015, 12:34  [ТС] #6
что то я не понял как сделать
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class App  extends Application {
 
   public static Context context;
 
 
 
    App(){}
    public static Context getAppContext()
    {
        return App.context;
    }
 
}

Java
1
2
3
4
5
6
7
8
9
10
public class Notiff extends Service {
 
 
    Context con = App.context;
 
    public void onCreate() {
        super.onCreate();
      
        App.context = getApplicationContext();
....
когда приложение работает, то все нормально.
но если закрыть активити то сервис перезапускается но падают функции где нужен этот контекст из класса APP
0
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 932
05.09.2015, 12:47 #7
Покажи сервис и свою реализацию Application класса и активити.
0
Turn96
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 82
05.09.2015, 12:54  [ТС] #8
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class main extends ActionBarActivity {
 
 
 
    String Log_Tag = "Main.java";
 
    var var;
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;
 
    // nav drawer title
    private CharSequence mDrawerTitle;
 
    // used to store app title
    private CharSequence mTitle;
 
 
 
    // slide menu items
    private String[] navMenuTitles;
    private TypedArray navMenuIcons;
 
    private ArrayList<NavDrawerItem> navDrawerItems;
    private NavDrawerListAdapter adapter;
    DBTools db;
    var.card card;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    var = new var();
        db = new DBTools(this);
        startService(new Intent(this, Notiff.class));
        mTitle = mDrawerTitle = getTitle();
        App.context = getApplicationContext();
App находится выше вместе с сервисом
0
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 932
05.09.2015, 13:00 #9
Вечером напишу небольшую статью о том, как правильно это все сделать и дам вам ссылку.
0
Turn96
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 82
06.09.2015, 03:35  [ТС] #10
так как правильно сделать?
0
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 932
06.09.2015, 17:36 #11
Моя статья Небольшая статья об использовании сервиса
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2015, 17:36
Привет! Вот еще темы с ответами:

Наследование от protected класса: будут ли public члены класса Б доступны классу А - C#
Добрый день! Если пронаследовать public класс А от protected класса Б, будут ли public члены класса Б доступны классу А, и доступны...

Можно ли как-то получить из одного класса исходный код другого класса? - C#
Предположим есть два публичных класса. Один находится в одной части проекта, другой где-нибудь в другой части проекта. Мне для своих...

Объявление объекта класса fstream в качестве статической компоненты другого класса - C++
Доброго времени суток. Есть задание, в котором говорится &quot;...Перепишите программы из упражнений 4 и 6 таким образом, чтобы использовать...

Ошибка при попытке использовать объект класса в определении другого класса - Visual C++
Муторное название получилось :scratch: Прошу помощи.... есть созданный класс работы со строкой: &quot;MyString.h&quot; class MyString { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.09.2015, 17:36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru