Android – 保持以前额外的意图额外的时候去上级活动

目前我正在使用Android并且在了解Activity生命周期的过程中仍遇到一些麻烦。

让我用一个例子向你展示我的问题:

我的应用程序包含一个Navigation Drawer ,允许使用不同的Fragment之间切换。 一个片段(片段A)是包含一些项目的列表。 点击一个项目打开活动B,可以描述为该项目的详细视图。 B通过意图接收所有必要的信息,项目模型实现Parcelable,并将其作为额外的Intent 。 活动B的button打开地图视图活动C

A – (Item) – > B – > C

在B的Activity onCreate方法调用时,使用C的操作栏中的Upbutton会使应用程序崩溃

 Item item = bundle.getParcelable("com.example.myapp.model.Item"); 

当然,因为详细视图B获得了必须从A显示的所有必要的信息,我怎样才能解决这个问题呢? 我想在调用C并再次到B时能够以某种方式存储该项目。 (使用C上的后退button可以正常工作)

如果您按照android开发人员网站上的提供导航中所述实现了导航,则只需将活动B的启动模式更改为“singleTop”,即可解决该错误。 。 在应用程序的manifest.xml文件中设置它,如下所示:

 <activity ... launchMode="singleTop" ... /> 

现在发生的事情,大概是因为B的发射模式是标准的,就是上行导航正在启动一个新的活动B实例; 它没有得到由A原本提供的额外

当根据链接的文档的启动模式是“单页”时,

如果父活动具有启动模式singleTop,或者上层意图包含FLAG_ACTIVITY_CLEAR_TOP,则父活动被带到栈顶,并通过其onNewIntent()方法接收意图。

在onNewIntent()中,我相信(请检查这个),你可以忽略新的意图,因为你想继续使用活动A的意图。

我将使用应用程序类来存储全局数据,如下所示: 使用Android应用程序类来保存数据这是一个单独的对象,可以被所有的活动引用