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

时间:2017-11-21 12:36:51

标签: android android-intent

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

以下是代码:

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);

行,在我完成开始的活动之后。代码的目的是显示一个快餐栏并从RecyclerView的适配器调用一个方法,所以我可以刷新列表。以下代码位于名为PlaneHolder的类中,该类不是活动或片段,调用的层次结构是下一个:

MainActivity - > FragmentOfMainActivity(这里是recyclerView所在的位置) - > PlaneAdapter - > PlaneHolder - > UpdateActivity(我更新的活动,以及完成后我想返回PlaneHolder的地方)。

1 个答案:

答案 0 :(得分:1)

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

要解决此问题,请使用@ rafid059建议的解决方案:而不是startActivity()使用startActivityForResult()并在Snackbar中显示onActivityResult()