2016-04-27 30 views
0

我知道这与其他帖子类似,但是这从来没有真正回答过。嵌套的startActivityForResult()没有返回到上一个Activity(s)

它使用Activity而不是Fragments,并且没有使用ActivityGroup 或Tabs。

我的MainActivity调用LocationActivity与startActivityForResult 后来与startActivityForResult, 但当DialogActivity退出调用DialogActivity和使用的setResult并完成 的onActivityResult在LocationActivity不会被调用,它会 一路回onActivityResult在MainActivity。

所有的活动属性都是“空白”的,noHistory默认为false。

(MainActivity) 
Intent intent = new Intent(getApplicationContext(),  LocationActivity.class); 
startActivityForResult(intent, Constants.LOCATION_ACTIVITY); 

@Override 
protected void onActivityResult(int iRequestCode, int iResultCode, Intent intentData) 
{ 
    super.onActivityResult(iRequestCode, iResultCode, intentData); 
} 

(LocationActivity) 
Intent intent = new Intent(getApplicationContext(), DialogActivity.class); 
startActivityForResult(intent, Constants.DIALOG_ACTIVITY); 

@Override 
protected void onActivityResult(int iRequestCode, int iResultCode, Intent intentData) 
{ 
    super.onActivityResult(iRequestCode, iResultCode, intentData); 
} 

(DialogActivity)  
Intent intent = new Intent(); 
setResult(Activity.RESULT_OK, intent); 
finish(); 

所以我需要做什么改变来获得LocationActivity 的onActivityResult的DialogActivity退出后到被调用,而不是onActivityResult 在MainActivity?而且,在我退出LocationActivity之后,我想要在MainActivity中调用onActivityResult的 以最终得到调用。

谢谢!

+0

你可以从清单中添加这些活动声明吗? – Asimaruk

+0

您有没有看过这个讨论? http://stackoverflow.com/questions/9689001/activity-started-with-startactivityforresult-not-returning-to-calling-activity?rq=1 –

+0

是的,我只是做了。我改变了上下文使用活动名称,并没有工作,我没有任何活动属性设置为使用noHistory true – user1572522

回答

0

我猜yuo用相同的上下文创建两个意图。尝试使用此(当前活动)而不是getApplicationContext()。

+0

只是试图改变意图使用:MainActivity.this和LocationActivity.this和相同事情发生了,MainActivity中的onActivityResult()不断被调用,虽然.. – user1572522

+0

哦,我也确保Activity常量都是> 0 .. – user1572522

+0

另外,看着Logcat,我注意到onPause()onStop()和onDestroy()在我调用LocationActivity中的startActivityForResult().. – user1572522