Android 从活动A转到B,然后回到A

Android 从活动A转到B,然后回到A,android,Android,我读了很多书,但仍然没有得到完整的答案。 启动应用程序A时,在onCreate方法中,我从Api获取数据并在ListView上设置。 这里还有一个按钮,当我点击它时,我将进入活动B并发送一些数据。 在我的B活动中,我将数据发送到我的api,如果响应状态为ok,我想返回到活动A并重新加载数据:callonCreate方法,它位于我对api的调用函数所在的位置。 在我的舱单中,我设置了 但当我称之为星际触觉时: Intent i = new Intent(B.this,A.class);

我读了很多书,但仍然没有得到完整的答案。 启动应用程序A时,在onCreate方法中,我从Api获取数据并在ListView上设置。 这里还有一个按钮,当我点击它时,我将进入活动B并发送一些数据。 在我的B活动中,我将数据发送到我的api,如果响应状态为ok,我想返回到活动A并重新加载数据:callonCreate方法,它位于我对api的调用函数所在的位置。 在我的舱单中,我设置了

但当我称之为星际触觉时:

Intent i = new Intent(B.this,A.class);
              Bundle b = new Bundle();
              String from = "upload";
              b.putString("action", from);
              startActivity(i);
我不会从一开始就开始行动。 在转到活动B之后,我已经尝试调用finish()函数,但没有得到任何结果。 我想把它附加到一个活动中,我从gallery获取文件,并将uri传递给活动B


谢谢。

如果您想回到A,并且需要在
启动活动(B)
后在A中调用
onCreate
调用
finish()
。这样,当您返回A时,
onCreate
将再次被调用(因为它已被销毁)

请注意,这不是处理问题的好方法。更好的方法是将“从Api获取数据”部分移动到活动A中的
onResume


稍后编辑:事实上,在这种情况下,
startActivityForResult()
是一种解决方法,不需要将事情过于复杂化。self注意:从现在开始,选择更简单的路线。

如果您想回到A,并且需要在
开始活动(B)
之后在A中调用
finish()
。这样,当您返回A时,
onCreate
将再次被调用(因为它已被销毁)

请注意,这不是处理问题的好方法。更好的方法是将“从Api获取数据”部分移动到活动A中的
onResume


稍后编辑:事实上,在这种情况下,
startActivityForResult()
是一种解决方法,不需要将事情过于复杂化。自我提示:从现在开始,选择更简单的路线。

如果你想开始一个孩子的活动以获得结果,不要使用
startActivity()
。改用
startActivityForResult()
。您还需要在主活动中实现(重写)一个方法,以便在结果准备就绪时调用。

如果您希望启动子活动以接收结果,请不要使用
startActivity()
。改用
startActivityForResult()
。您还需要在主活动中实现(重写)一个方法,以便在结果准备就绪时调用。

我尝试了这个方法,但在活动B中我编写startActivity(a)时,我遇到了一个异常。对不起,我犯了一个愚蠢的错误,在a中我需要额外的,而在B中我没有通过它们。谢谢帮助!Android的startActivityForResult()正是为了将B的结果提供给A。用onCreate()和onResume()来解决这个问题是没有什么补偿价值的。@mah:True。我太专注于“让它以这种方式工作”,也看到了更简单的解决方案。我尝试了这个方法,但在活动B中我写startActivity(A)时,我得到了一个例外。对不起,我有一个愚蠢的错误,在A中我期望额外的,B中我没有通过。谢谢帮助!Android的startActivityForResult()正是为了将B的结果提供给A。用onCreate()和onResume()来解决这个问题是没有什么补偿价值的。@mah:True。我太专注于“让它以这种方式工作”,也看到了更简单的解决方案。我是android新手,你能写下我必须实现的方法吗ActivityResult()需要实现。当B finish()s时,将调用A的onActivityResult()。它将包括B的结果代码(B可以在调用finish()之前使用setResult()设置该代码,并使用a定义的请求代码(以允许a区分多个子活动)。它也会将任何数据B返回给A。虽然我没有使用过该页面,但似乎有一个示例。我是android新手,你能写下我必须实现的方法吗?需要实现ActivityResult()。当B完成()时,将调用A的onActivityResult()。它将包括B的结果代码(B可以用setResult()设置)在调用finish()之前,使用由a定义的请求代码(以允许a区分多个子活动)。它还将任何数据B返回给a。虽然我没有使用该页面,但似乎有一个示例。