我有三项活动,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");
}
答案 0 :(得分:0)
使用StartActivityForResult调用您的活动,如果您想要获得结果,则返回调用者活动以调用活动。
答案 1 :(得分:0)
在标准启动模式下,切换到ActC后,ActB将从头开始创建(没有您的意图数据)
您需要更改ActB的启动模式
<activity android:name="ActB" launchMode="singleTop" ... />
在这种情况下,您将收到旧的ActB