gpt4 book ai didi

java - 如何将对象传递给新 Activity 、修改该对象并更新第一个 Activity 中的更改?

转载 作者:行者123 更新时间:2023-12-02 09:57:47 25 4
gpt4 key购买 nike

我正在尝试在 Android Studio 中制作一种空闲 RPG 游戏。你有一个英雄,它有一些属性,如经验值、等级、生命值、金币等。

我的主屏幕显示了名称、XP 和级别。然后我想打开另一个 Activity 并更改 XP,当我返回到第一个屏幕时,XP 也会在那里更新。

我该如何去做呢?

我通过将 Hero 对象设置为 Singleton 来使其工作。然而,这给我带来了一些设计问题,所以我更愿意使用替代方法。

我也尝试过使用 Intent 传递对象,但它似乎没有更新主 Activity 中的更改。到目前为止,它只是更新第二个 Activity 中的对象属性,但是当我关闭该 Activity 时,即使我再次打开该 Activity ,也不会保存任何更改。

我在开发 Android 应用程序方面经验不足,所以我可能做错了什么。任何帮助将不胜感激!

Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("hero", hero);
startActivity(intent);
Hero hero = (Hero) getIntent().getSerializableExtra("hero");
hero.incxp();

最佳答案

您应该使用 startActivityForResult 将对象发送到第二个 Activity。在第二个 Activity 中更新您的值后,将对象传回第一个 Activity 并使用它来更新您的值。在第一个 Activity 中:

Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("hero", hero);
startActivityForResult(intent,101);

在第二个 Activity 中:

Hero hero = (Hero) getIntent().getSerializableExtra("hero");
hero.incxp();
Intent returnIntent = new Intent();
returnIntent.putExtra("hero",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();

再次回到第一个 Activity,重写 onActivityResultMethod 以获取值:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 101) {
if(resultCode == Activity.RESULT_OK){
Hero hero = (Hero) data.getSerializableExtra("hero");
// update views with your new hero object
}

}
}

关于java - 如何将对象传递给新 Activity 、修改该对象并更新第一个 Activity 中的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55867458/

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