我有一个应用程序,它(为了简单起见)有两种类型的 Activity - Overview 和 DetailView。 Overview Activity 显示步骤列表,并允许用户启动与所选步骤相对应的 DetailView Activity 。
在 DetailView Activity 中,用户可以启动另一个 Overview,它显示与当前 DetailView 父级中不同的步骤。
在Overview中,DetailView是使用startActivityForResult()启动的。在 DetailView 中,当用户决定启动第二个 Overview 时,我调用 setResult() 和 finish() 然后启动新的 Overview。在这种情况下,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 ();
最佳答案
在您的 DetailView 中,您似乎正在开始一个新的概览,因此您将 O->D->O 作为您的 Activity 堆栈。如果您在 DetailView 代码中注释 startActivity,您将设置结果并调用 finish()。这应该使您从 DetailView (O->D) 返回到原始 Overview (O),结果在 onActivityResult 中。因此,您似乎需要决定是继续使用新的概览还是返回原始概览并返回结果。您无法前进到新的概览并让它看到结果。我希望这是有道理的。
关于android - 当 child 开始与 parent 相同类型的 Activity 时,finishFromChild 和 onActivityResult 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2996362/