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

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

04.02.2015, 17:41. Просмотров 738. Ответов 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
Есть класс 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...

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
Скажи пожалуйста. У меня есть 3 активити. Из первой активити я вызываю...

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

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


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

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

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