gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:05:40 27 4
gpt4 key购买 nike

我正在编写一个 Android 应用程序,它显示一个带有一些元素和一些 CRUD 操作的 RecyclerView。我想做的一件事是从我的 RecyclerView 更新现有元素,为此我打开一个新 Activity ,我在其中填充一些文本框并在数据库中更新。在我 finish() 更新 Activity 之后,程序返回到前一个,但在不执行我首先启动 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);

行,在我完成开始的 Activity 之后。代码的目的是显示一个 snackbar 并从 RecyclerView 的适配器调用一个方法,这样我就可以刷新列表。以下代码位于名为 PlaneHolder 的类中,它不是 Activity 或 fragment ,调用的层次结构是下一个:

MainActivity -> FragmentOfMainActivity(recyclerView 位于此处)-> PlaneAdapter -> PlaneHolder -> UpdateActivity(我更新的 Activity ,完成后我想从那里返回到 PlaneHolder)。

最佳答案

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

要解决此问题,请使用@denvercoder9 建议的解决方案:使用 startActivityForResult() 代替 startActivity() 并在中显示您的 Snackbar onActivityResult()

关于Android:finish()后从intent开始的位置继续执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47413301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com