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

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

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

OnActivityResult из сервис во фрагмент - Android

04.02.2015, 17:41. Просмотров 526. Ответов 2
Метки нет (Все метки)

Здравствуйте,есть акивити которая запускает мой сервис.
после запуска, сервис должен отослать данные во фрагмент.
по логам показывает что сервис запустился, произвел операции, но фрагмент не выдал логов о том что он получил данные.
как произвести такую цепочку активити->сервис->фрагмент?

main.java(Activity)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
kill = new Intent(this, timer.class);
 
        pi = createPendingResult(TASK1_CODE, kill, 0);
 
        intent = new Intent(this, timer.class).putExtra(PARAM_TIME, 7)
                .putExtra(PARAM_PINTENT, pi);
 
        startService(intent);
 
        pi = createPendingResult(TASK2_CODE, kill, 0);
        intent = new Intent(this, timer.class).putExtra(PARAM_TIME, 4)
                .putExtra(PARAM_PINTENT, pi);
        startService(intent);
 
        pi = createPendingResult(TASK3_CODE, kill, 0);
        intent = new Intent(this, timer.class).putExtra(PARAM_TIME, 6)
                .putExtra(PARAM_PINTENT, pi);
        startService(intent);
timer.java(Service)

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(LOG_TAG, "MyService onStartCommand");
        int time = intent.getIntExtra(user_rassp.PARAM_TIME, 1);
        PendingIntent pi = intent.getParcelableExtra(user_rassp.PARAM_PINTENT);
 
    MyRun mr = new MyRun(time, startId, pi);
    es.execute(mr);
    return START_REDELIVER_INTENT;
}
 
@Override
public IBinder onBind(Intent intent) {
    return null;
}
 
class MyRun implements Runnable {
 
    int time;
    int startId;
    PendingIntent pi;
 
    public MyRun(int time, int startId, PendingIntent pi) {
        this.time = time;
        this.startId = startId;
        this.pi = pi;
        Log.d(LOG_TAG, "MyRun#" + startId + " create");
    }
 
    public void run() {
        Log.d(LOG_TAG, "MyRun#" + startId + " start, time = " + time);
        try {
 
            pi.send(user_rassp.STATUS_START);
 
            TimeUnit.SECONDS.sleep(time);
 
 
            Intent intent = new Intent().putExtra(user_rassp.PARAM_RESULT, time * 100);
            Log.d(LOG_TAG, "конец");
            pi.send(timer.this, user_rassp.STATUS_FINISH, intent);
 
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (PendingIntent.CanceledException e) {
            e.printStackTrace();
        }
        stop();
    }
 
    void stop() {
        Log.d(LOG_TAG, "MyRun#" + startId + " end, stopSelfResult("
                + startId + ") = " + stopSelfResult(startId));
    }
}
user_rasp.java(fragment)

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
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d(LOG_TAG, "requestCode = " + requestCode + ", resultCode = "
            + resultCode);
 
    // Ловим сообщения о старте задач
    if (resultCode == STATUS_START) {
        switch (requestCode) {
            case TASK1_CODE:
                Log.d("task1","start");
                break;
            case TASK2_CODE:
                Log.d("task1", "start");
                break;
            case TASK3_CODE:
                Log.d("task1", "start");
                break;
        }
    }
 
    // Ловим сообщения об окончании задач
    if (resultCode == STATUS_FINISH) {
        int result = data.getIntExtra(PARAM_RESULT, 0);
        switch (requestCode) {
            case TASK1_CODE:
                Log.d("Task1", "finish, result = " + result);
                break;
            case TASK2_CODE:
                Log.d("Task2", "finish, result = " + result);
                break;
            case TASK3_CODE:
                Log.d("Task3", "finish, result = " + result);
                break;
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2015, 17:41     OnActivityResult из сервис во фрагмент
Посмотрите здесь:

Android Фрагмент и карты
Android onActivityResult для Fragment
передача результата в onActivityResult Android
Android OnActivityResult For Fragment
Android CursorLoader и фрагмент
Android Не создается фрагмент
OnActivityResult и FragmentActivity Android
Из Активити в Фрагмент Android
Активити и фрагмент Android
OnActivityResult Android
Android OnActivityResult() внутри Dialog
Android Два onActivityResult в одной Activity

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
04.02.2015, 19:06     OnActivityResult из сервис во фрагмент #2
Цитата Сообщение от biosice Посмотреть сообщение
как произвести такую цепочку активити->сервис->фрагмент
Юзать EventBus.
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
04.02.2015, 21:07     OnActivityResult из сервис во фрагмент #3
Возможно лучше будет использовать BroadcastReceiver
Yandex
Объявления
04.02.2015, 21:07     OnActivityResult из сервис во фрагмент
Ответ Создать тему
Опции темы

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