Android:在finish()之后从意图开始的位置继续执行

Android:在finish()之后从意图开始的位置继续执行,android,android-intent,Android,Android Intent,我正在编写一个Android应用程序,它显示一个包含一些元素和一些CRUD操作的RecyclerView。我试图做的一件事是从我的RecyclerView更新一个现有元素,为此我打开一个新的活动,在其中填充一些文本框并在数据库中更新。在我完成更新活动()之后,程序返回到上一个活动,但在没有执行我首先启动intent的方法中保留的任何代码之前 代码如下: Intent intent1 = new Intent(context, UpdateActivity.class); Gson gson =

我正在编写一个Android应用程序,它显示一个包含一些元素和一些CRUD操作的RecyclerView。我试图做的一件事是从我的RecyclerView更新一个现有元素,为此我打开一个新的活动,在其中填充一些文本框并在数据库中更新。在我完成更新活动()之后,程序返回到上一个活动,但在没有执行我首先启动intent的方法中保留的任何代码之前

代码如下:

Intent intent1 = new Intent(context, UpdateActivity.class);

Gson gson = new Gson();
String planeAsString = gson.toJson(plane);
intent1.putExtra("PlaneString", planeAsString);
context.startActivity(intent1);

Snackbar snackbar1 = Snackbar.make(v, "Element was updated", Snackbar.LENGTH_SHORT).setDuration(2000);
adapter.onIorUItem();
snackbar1.show();

break;
我应该怎么做才能在测试结束后执行代码

context.startActivity(intent1);
行,在我完成开始的活动之后。代码的目的是显示一个snackbar,并从RecyclerView的适配器调用一个方法,以便刷新列表。以下代码位于名为PlaneHolder的类中,该类不是活动或片段,调用的层次结构是下一个:


MainActivity->FragmentOfMainActivity(回收视图位于此处)->PlaneAdapter->PlaneHolder->UpdateActivity(我更新的活动,以及我完成后想要返回PlaneHolder的活动)。

调用
startActivity()
时,新的
活动不会立即启动。这只是请求Android框架启动新的
活动
。在发生任何事情之前,您的代码将继续运行到完成。在您的方法完成并将控制权返回到Android框架之前,Android无法启动新的
活动。这意味着您的
Snackbar
将在Android启动新的
活动之前立即显示。您可能只是看不到它,因为它发生在新的
活动
下面。添加日志记录或设置断点,您将看到这一点

要解决此问题,请使用@rafid059:建议的解决方案,而不是使用
startActivity()
使用
startActivityForResult()
,并在
onActivityResult()
中显示所需的
Snackbar
。使用
startActivityForResult()
并在活动中使用snackbar覆盖
onActivityResult()
。更多关于这个