2011-11-17 116 views
1

我有3个不同的活动在TabGroupActivity。比方说A - Parent, B - Child 1, C - Child 2Android完成父母活动

A ---开始 - >乙 乙---开始 - “ç

,我有C中的警报对话框,其显示了一些消息。当我按下对话框上的确定按钮时,我想回到活动A.

但问题是我可以从其他活动中打开活动C,我也想回到他们的父母活动。所以我需要做一些工作,无论哪个活动打开C。我试过这个,但没有工作:

Intent intent = new Intent(Synchronization.this,Synchronization.this.getParent().getClass()); 

但它没有帮助我。有什么建议么?

回答

4

你只需要使用两个Activity方法即, startActivityForResult()onActivityResult()

实施例:http://www.vogella.de/articles/AndroidIntent/article.html#explicitintents

这里不用的逻辑:

在ActivityB

开始ActivityC通过使用startActivityForResult(activityCIntent,INT_CODE);

在ActivityC

现在检查如果按下Dialog没关系Button,如果是,那么使用setResult(RESULT_OK,intent);设置结果,然后调用finish();

然后控制就会被重定向到ActivityB的onActivityResult()方法。 现在在onActivityMethod()里面检查result_code==RESULT_OKrequestCode = INT_CODE。如果是,那么只需拨打电话finish();

+0

就是这两种方法之间的区别? – Shaireen

+1

'startActivityForResult()'用于启动任何其他显式意图,并从它启动的'Intent'接收结果。 'onActivityResult()'负责从启动的Explicit'Intent'获取数据。 –

0

在活动B中,开始C活动为startActivityForResult(),因此当您完成C活动时,它将返回到B并返回结果。因此,您可能会通过意向对象的标志。

现在当你用OK按钮完成C活动,然后将结果设置为RESULT_OK到setResult()中,如果你需要将数据传递回B活动,你可以将数据设置为Intent, setResult()方法,然后完成C活动。

现在在B检查请求码是从C然后完成这个活动。在您启动此C活动时,您还可以为A活动启动B活动。

而且你需要重写onActivityResult()在B活性,如果你启动B活动作为结果,那么你也还需要定义成一个活动