gpt4 book ai didi

java - 当我完成结果的 Activity 时调用 OnCreate 和 onActivityResult

转载 作者:行者123 更新时间:2023-11-29 22:36:59 29 4
gpt4 key购买 nike

我有 Activity A。它显示通过在 onCreate 中调用 void loadData() 从服务器检索的一些数据。

用户单击一个按钮,为结果打开一个新的 Activity B。完成后返回 Activty A。onActivtyresult 应该调用 loadData() 以重新加载数据。

当 Activty B 完成时,作为 A 调用的 onCreate 和 onActivityResult 都被销毁。这对我来说不好。

问题是:

  • Dose Activity A 总是会被销毁并调用 onCreate 吗?这是否记录在案,因为我找不到任何关于此的信息。如果是这种情况,那么我将仅在 onCreate 中调用 loadData。

    如果不是,我也必须从 onActivityResult 调用 loadData,这在某些情况下再次导致调用 loadData 2 次,这是我不想要的。

    A 类:

        public void onCreate(@Nullable Bundle bundle) {
    .... creation code
    loadData(); // will be called first time activity created as well when back from the activity B
    }

    public void createNew() {
    Intent createService = new Intent(this,CreateService.class);
    startActivityForResult(createService, 1001);
    overridePendingTransition(R.anim.out_top,R.anim.fp);
    }

    public void onActivityResult(int i, int i2, Intent intent) {
    super.onActivityResult(i, i2, intent);
    if (i2 != -1) {
    loadData(); ///will be called when back from Activty B
    }
    }

    B 类:

        public void on taskFinish() {
    setResult(1);
    finish();
    overridePendingTransition(R.anim.s_right, R.anim.s_in_right);
    }

最佳答案

我已经有了这样的解决方法

     boolean loaded = false;
void onCreate() {
loadData();
loaded=true;
}

public void createNew() {
loaded = false; /// Set before start the new Activity
Intent createService = new Intent(this,CreateService.class);
startActivityForResult(createService, 1001);
overridePendingTransition(R.anim.out_top,R.anim.fp);
}

public void onActivityResult(int i, int i2, Intent intent) {
super.onActivityResult(i, i2, intent);
if (i2 != -1) {
if (!loaded) {
loadData();
loaded = true;
}
}
}

我有2个扫描

1- Activity 创建形式 scrach- loadData 将在 OnCrate() 中调用一次

2- 为结果启动新 Activity - 设置 loaded = false

a- 返回结果后,如果 Activity 被销毁,则在 onCreate 中加载 == true 并且 loadData 将被调用一次。然后将调用 onActivityResult 但不会调用 loadData。

b- 返回结果后如果 Activity 没有被销毁然后 loaded = false 和 将调用 loadData

关于java - 当我完成结果的 Activity 时调用 OnCreate 和 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59434982/

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