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