startActivityForResult от ActivityGroup? - PullRequest
       1

startActivityForResult от ActivityGroup?

9 голосов
/ 24 ноября 2010

Кажется, я не могу получить ЛЮБОГО результата при попытке начать действие из группы действий.Я поместил результат активности в группу активности и активности?В частности, я пытаюсь позволить пользователю выбрать фото / видео из Intent.ACTION_GET_CONTENT, но я ничего не получаю обратно?Что я делаю не так?

Вот как я называю код:

Intent pickMedia = new Intent(Intent.ACTION_GET_CONTENT);
   pickMedia.setType("video/*");
   startActivityForResult(pickMedia,12345);

Есть идеи?

Ответы [ 2 ]

41 голосов
/ 31 декабря 2010

У меня была похожая проблема. У меня была активность подгруппы управления. Одно из вложенных действий называется похожим внешним намерением (внешним для моего приложения). Он никогда не вызывал onActivityResult в подзадаче, которая его запустила.

Я наконец-то понял / вспомнил, что проблема в том, что Android допускает только вложенный слой подэтапов ... т.е. подэтапы не могут вкладывать субактивиты. Чтобы решить это:

  1. Звоните getParent().startActivityForResult() из вашей под-деятельности
  2. ваш родитель (группа активности) сможет обработать onActivityResult. Поэтому я создал подкласс ActivityGroup и обработал это onActivityResult.
  3. При необходимости вы можете перенаправить полученный результат обратно в подзадачу. Просто получите текущую активность по getLocalActivityManager().getCurrentActivity(). Мои подзадачи наследуются от пользовательских действий, поэтому я добавил handleActivityResult(requestCode, resultCode, data) в этот подкласс для вызова ActivityGroup.
4 голосов
/ 24 февраля 2013

В вашей родительской деятельности

protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    if (requestCode == YOUR_REQUEST_CODE)   {

        CHILD_ACTIVITY_NAME activity = (CHILD_ACTIVITY_NAME)getLocalActivityManager().getCurrentActivity();

        activity.onActivityResult(requestCode, resultCode, intent);}}

Так что onActivityResult вашей детской деятельности будет выполняться.

...