Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
biosice
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 49
#1

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

04.02.2015, 17:41. Просмотров 688. Ответов 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;
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2015, 17:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос OnActivityResult из сервис во фрагмент (Программирование Android):

OnActivityResult
Есть класс Photo public class Photo { Uri mUri; Activity ac; ...

OnActivityResult For Fragment
Помогите решить проблему. У меня есть ListFragment который отображает фотки из...

OnActivityResult и FragmentActivity
Добрый день. Мучился вчера весь день, но так и не одолел проблему. Предыстория:...

OnActivityResult() внутри Dialog
Создаю кастомный диалог: MyDialog = new Dialog(this);...

onActivityResult для Fragment
public class General_Activity extends FragmentActivity { public class...

передача результата в onActivityResult
Скажи пожалуйста. У меня есть 3 активити. Из первой активити я вызываю...

2
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
04.02.2015, 19:06 #2
Цитата Сообщение от biosice Посмотреть сообщение
как произвести такую цепочку активити->сервис->фрагмент
Юзать EventBus.
0
shulyakyarik
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
04.02.2015, 21:07 #3
Возможно лучше будет использовать BroadcastReceiver
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2015, 21:07
Привет! Вот еще темы с решениями:

Два onActivityResult в одной Activity
Понимаю что видимо это не реально, но тем не менее. Ситуация в Activity уже...

Вырезать фрагмент из wav файла и сохранить этот фрагмент в новый файл.
Добрый день, подскажите плиз как можно вырезать фрагмент из wav и сохранить его...

Laravel расскажите про сервис провайдеры и сервис контейнеры
Всю доку перечитала, все равно ничего понять не могу про них. Везде пишут, что...

Духовка BOSCH HBA 73A 550 /01 нужен сервис мануал, Похоже демо , не могу снять ,нужно как зайти в сервис
Не включает не один ТЭН , свет вентиляторы работают ,несколько дохлых реле...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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