Android:检测活动何时返回上一个活动

M J*_*sse 5 android

我有一个带有listView的活动A,用户点击任何启动活动B的项目.根据用户在活动B中的操作,可能会更改活动A上的listView.

所以我的问题:

当用户从活动B返回时,如何告诉活动A它已恢复?

我希望能够在返回时在活动A中发出listView的刷新信号.

谢谢!

JiT*_*HiN 9

您可以在活动A中添加代码以刷新列表视图onResume().

@Override
protected void onResume() {
    super.onResume();
    //Code to refresh listview
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这在其他情况下也会调用,例如 Activity 启动、设备旋转等,而不仅仅是从 Activity B 返回。 (3认同)

Muz*_*Muz 5

使用startActivityForResult是最优雅的方式。OnResume每次您关闭并打开该应用程序时都会发生,这将占用更多资源,尤其是在刷新大量数据时。

在活动顶部将请求代码声明为常量:

public static final int OPEN_NEW_ACTIVITY = 123456;
Run Code Online (Sandbox Code Playgroud)

将其放在开始新活动的位置:

Intent intent = new Intent(this, NewActivity.class);
startActivityForResult(intent, OPEN_NEW_ACTIVITY);
Run Code Online (Sandbox Code Playgroud)

活动结束后做点什么。文档建议您使用resultCode,但是根据情况,您的结果可以是RESULT_OKRESULT_CANCELED按下按钮时。所以我会省略它。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == OPEN_NEW_ACTIVITY) {
        // Refresh your ListView here
        // ....
    }
}
Run Code Online (Sandbox Code Playgroud)

由于某些原因,将片段放入片段时遇到了麻烦。因此,您必须将其放入活动中。