如何将值保持在额外的持久性

时间:2016-12-17 11:01:06

标签: android android-intent android-activity

我有三项活动,ActA,ActB和ActC。 ActA使用startActivity(intent)启动ActB,并且该intent在附加内容中包含一些double值,如下所示:

intent.putExtra(KEY_JAERLICHE_KOST, mHashVersPricing.get(position).getKostenProJahr());//double value
    intent.putExtra(KEY_MONATLICHE_KOST, mHashVersPricing.get(position).getKostenProMonat());//double value

当ActB启动时,我可以收到附加内容中包含的变量的值,它们是正确的。

问题是,当ActB启动ActC并从ActC返回ActB时。在这种情况下,下面的代码也将被执行,但变量的值将为零,这是错误的。

我想要做的是保持附加内容中包含的变量的值保持不变,即使我从ActC导航回到ActB。

请让我知道当我导航回ActB时如何使附加内容中的值持续存在

ActB中用于接收意图中的附加内容的代码

Intent intent = this.getIntent();
    if (intent != null) {
        Bundle extras = intent.getExtras();
        if (extras != null && intent.hasExtra(Vers.KEY_JAERLICHE_KOST) && intent.hasExtra(VersicherungsListeActivity.KEY_MONATLICHE_KOST)) {
            this.mJärlicheKost = (double) extras.get(Vers.KEY_JAERLICHE_KOST);
            this.mMonatlicheKost = (double) extras.get(Vers.KEY_MONATLICHE_KOST);
        } else {
            Log.e(TAG, "extras is null or the specified keys are not associated to it");

            Log.e(TAG, "mJärlicheKost: " + mJärlicheKost);//this is zero when i navigate from ActC to ActB which is wrong
            Log.e(TAG, "mMonatlicheKost: " + mMonatlicheKost);//this is zero when i navigate from ActC to ActB which is wrong
        }
    } else {
        Log.e(TAG, "intent is null");
    }

2 个答案:

答案 0 :(得分:0)

使用StartActivityForResult调用您的活动,如果您想要获得结果,则返回调用者活动以调用活动。

答案 1 :(得分:0)

在标准启动模式下,切换到ActC后,ActB将从头开始创建(没有您的意图数据)

您需要更改ActB的启动模式

<activity android:name="ActB" launchMode="singleTop" ... />

在这种情况下,您将收到旧的ActB