Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中的活动之间持久化Intent发送的数据_Android_Android Intent_Android Activity_Sharedpreferences - Fatal编程技术网

在Android中的活动之间持久化Intent发送的数据

在Android中的活动之间持久化Intent发送的数据,android,android-intent,android-activity,sharedpreferences,Android,Android Intent,Android Activity,Sharedpreferences,所以我有AppCompatActivityA,B和C。从A,我开始活动B,传递意图I0。在B'sonCreate中,我获取I0并基于该数据初始化UI。现在我打开C(从B)。当我从C按下android.support.v7.widget.Toolbar的app:navigationIcon后退按钮时,B的onCreate再次被调用,但现在意图I0不再包含getStringExtra(“数据”)中的数据 我曾尝试使用onSaveInstanceState和onRestoreInstanceState

所以我有AppCompatActivity
A
B
C
。从
A
,我开始活动
B
,传递意图
I0
。在
B
's
onCreate
中,我获取
I0
并基于该数据初始化UI。现在我打开
C
(从
B
)。当我从
C
按下
android.support.v7.widget.Toolbar的
app:navigationIcon
后退按钮时,
B
onCreate
再次被调用,但现在意图
I0
不再包含
getStringExtra(“数据”)中的数据

我曾尝试使用
onSaveInstanceState
onRestoreInstanceState
,如其他地方所述,但未调用
onRestoreInstanceState
,并且
onCreate
中的
savedInstanceState
捆绑包为
null

所以我想知道是否有一种方法可以保存活动的UI状态
B
(不是销毁它?)或者意图
I0
的额外数据


感谢@pskink建议将
android:launchMode=“singleTop”
设置在活动上,我在Github上创建了一个。这就解决了我的问题,因为在启动活动C时,
B
不会以无效的意图重新创建

,不要关闭(确切地说是不要调用finish())活动B,这样活动B仍会在backbackback中,因此它不会再次初始化。@nobalG From B,我只是用C调用StartActivity-如何不销毁B?
当我从C按下后退按钮时,B的onCreate再次被调用,但现在意图I0为空-因此这次初始化失败
。这显然不是真的,您将具有与第一次启动活动B相同的意图time@pskink你是对的;intent不是null,但是对getStringExtra的调用返回null否,它也有相同的额外值