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

标签 java android

我正在尝试在 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/

相关文章:

java - 在其成员方法中实例化抽象类

java - 在 MVC 应用程序中,依赖注入(inject)将在哪里发生?

java - 如何在cpanel中连接远程mysql连接

android - 以编程方式连接到没有互联网的wifi

Java PathIterator顺时针还是逆时针?

Java RMI SSL 存在 keystore /信任库错误?

java - 将 XML 放入嵌套布局后,数学逻辑停止工作

android - android :supportsRtl ="true" in AndroidManifest xml file有什么用

android - 导入时出现 ClassNotFoundException。阿尔

跨 DAO 的 Android Room 交易