FinishFromChild и onActivityResult не запускаются, когда дочерний элемент начинает действие того же типа, что и родительский. - PullRequest
1 голос
/ 08 июня 2010

У меня есть приложение, которое (для простоты) имеет два типа действий - Overview и DetailView.Действие Overview показывает список шагов и позволяет пользователю запустить действие DetailView, соответствующее выбранному шагу.

В действии DetailView пользователь может запустить другой обзор, который показывает шаги, отличные от шагов вродительский элемент текущего DetailView.

В обзоре DetailView запускается с помощью startActivityForResult ().В DetailView, когда пользователь решает запустить второй обзор, я вызываю setResult () и finish (), а затем запускаю новый обзор.В этом случае onActivityResult () и finishFromChild () не запускаются.Вместо этого они запускаются, когда родитель заканчивает (!?).

Я надеюсь, что этот вопрос не слишком глуп:)

Код из обзора:

        Intent spIntent = new Intent ();
  spIntent.setClassName ("com.testing.testa", "com.testing.testa.Overview");

  spIntent.putExtra("id", itemId);
  spIntent.putExtra("local", isLocal);
  spIntent.putExtra("numberOfSteps", numberOfSteps);
  spIntent.putExtra("currentStep", swipeStepNumber);

  spIntent.putExtra("name", name);

  System.out.println ("swipeStepNum: " + this.swipeStepNumber);
  startActivityForResult (spIntent, 0);

...

public void onActivityResult (int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  System.out.pritnln ("Child ended with resultCode: " + resultCode);     }

Код из DetailView:

Intent spIntent = new Intent ();
spIntent.setClassName ("com.testing.testa", "com.testing.testa.Overview");
spIntent.putExtra("id", itemId);
spIntent.putExtra("name", sectionedAdapter.getItem(position).toString());
startActivity (spIntent);
Intent die = new Intent ();
die.putExtra ("die", true);
setResult (1, die);
finish ();

1 Ответ

1 голос
/ 20 июля 2010

В вашем DetailView кажется, что вы запускаете новый обзор, поэтому в качестве стека ваших действий вы бы выбрали O-> D-> O. Если вы прокомментируете startActivity в коде DetailView, вы установите результат и вызовите finish (). Это должно вернуть вас из DetailView (O-> D) в исходный Overview (O) с результатом onActivityResult. Таким образом, кажется, вам нужно решить, хотите ли вы перейти к новому обзору или вернуться к исходному обзору с результатом. Вы не можете перейти к новому обзору и увидеть результат. Я надеюсь, что это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...