问题标签 [instancestate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
163 浏览

android - 应用升级期间是否清理了 Android 活动 instanceState?

在活动的 instanceState 中,我们存储了一个 Serializable (bundle.putSerializable)。在来自 Play 商店的崩溃报告中,我们看到了以下堆栈跟踪:

我们的代码被 DexGuard 混淆了。看起来Android能够序列化类但不能反序列化类。

我们目前能想到的唯一原因是应用程序的升级(通过 de Play 商店)。在版本之间,类发生了变化(因为 Dexguard),使得反序列化变得不可能。

所以,我的问题是:Android 在升级应用程序期间是否清除应用程序的所有实例状态?

0 投票
0 回答
80 浏览

android - 将布尔值保存到捆绑包中以供以后在 Android 中使用

当我尝试将 a 保存boolean到 a时,它似乎已保存(来自打印输出),但是在从访问应用程序的设置页面返回后,系统在重新创建过程Bundle中没有调用该方法。onRestoreInstanceState(设置在单独的活动中,从右上角的选项列表中点击)
根据:
https
://developer.android.com/training/basics/activity-lifecycle/recreating.html 该onRestoreInstanceState方法将仅在Bundle!=时调用null
我还将它放入onCreate方法中(使用空检查器)并且Bundle总是出现空值。
我没有足够的声誉来发布图片,但这个链接显示了 logcat:https://www.dropbox.com/s/v6vw9ynw5az5zhg/AndroidLogCat.PNG?dl=0

谢谢!
罗比

0 投票
0 回答
285 浏览

android - 如何在 Xamarin for Android 中为实例状态序列化自定义对象列表?

我有一个通用列表作为我活动的数据源。现在我想将此列表保存为实例状态。

在原生 Android 应用程序中,这可以很容易地完成——我只是让我的自定义模型实现 Serializable——因为通用 ArrayList 也实现了 Serializable,我可以简单地使用

将其保存到实例状态。

Xamarin 中的 List<T> 不实现 Java.IO.ISerializable。那么如何在这里将我的列表置于实例状态?

任何想法如何在 Xamarin for Android 中执行此操作?

来自https://forums.xamarin.com/discussion/57637/how-to-serialize-list-of-custom-objects-for-instance-state的交叉发帖

0 投票
1 回答
68 浏览

android - Android SaveInstanceState

我有两个活动,比如 A 和 B。活动 A 有一个文本视图,两个按钮 B1 用于增加计数器,B2 用于导航到活动 B。我在文本视图中输入了一些文本并增加了计数器值。我通过单击按钮 B2 导航到活动 B。活动 B2 具有返回到活动 A 的向上导航。当我从 B 返回到活动 A 时,我需要保留文本视图和计数器值。最好的方法是什么......?我试过 SavedInstanceState。但是当我从 B 返回活动 A 时,不会调用 OnrestoreInstanceState。我也尝试过共享首选项。但我认为这不是最好的方法..andro

0 投票
2 回答
312 浏览

android - 如何在不丢失实例的情况下使用 onConfigChanges 刷新应用程序

我想更改应用程序语言而不重新创建应用程序。我的意思是当用户从设置中选择任何语言时我想这样做,然后它应该在不使用的情况下更改设置活动语言recreate();,因为当我使用recreate();它时,应用程序会闪烁一次。

所以我没有使用recreate();. 相反,我在设置活动中编写了以下代码AndroidManifest.xml

如下图所示,您可以看到我选择了“印地语”作为语言,但它没有将活动更新为印地语。我的意思是“选择国家”、“选择您的语言”和“选择类别”应该用印地语而不是英语显示。我用两种语言写过字符串。

任何人都可以知道更改语言时如何更改它吗?或为什么 onConfigChanges 不适用于区域设置,因为它适用于方向。

谢谢 !

在此处输入图像描述

0 投票
1 回答
94 浏览

android - Android - 当最小 SDK 为 16 时,从 Activity B 中的 Activity A 动画视图

制作项目我面临以下问题。

我必须在属于 Activity A 的视图上执行一些动画,同时执行属于 Activity B 的动画。

最低 SDK 为 16,因此我不能使用共享元素方法。

我能想到的最好方法是在没有动画的情况下启动 Activity B,并创建一种机制,从 Activity A 传递到 Activity B 指令以动态创建必要的视图,将它们添加到父布局并在所有视图上执行所需的动画。

有人可以分享一些关于如何做这样的事情的见解吗?我的第一个想法是为每个视图传递一个 InstanceState 包的列表。就像是

由于每个人都在提供仅适用于 ImageViews 的解决方案,所以让我明确一点……我说的是对具有 TextViews、Buttons、ImageViews、ToggleButtons、CheckBoxes 的整个布局进行动画处理……一切。

0 投票
2 回答
768 浏览

android - 在活动之间切换时保留列表视图的数据

当我将一项活动留给另一项活动时,我正在努力保留列表视图的数据或项目,例如,我在单击时创建了简单的应用程序,会将增加的数字添加到列表视图中,因此每次单击都会创建一个项目,例如 1 另一个单击添加 2 等等上。

该程序适用于主要活动,但随后我想查看另一个活动的结果,我称之为第二个活动,但问题是当我在第二个活动上点击返回按钮以返回主要活动时,我将丢失所有项目列表视图。

我在谷歌上查看了这么多信息,但无法理解它,所以请提供建议,并且请详细一点,因为我是初学者,我认为实例状态或共享偏好可以完成这项工作,但我不知道任何他们

在此先感谢,这是我的主要活动和第二个活动的应用程序代码和输出图片对不起,我将代码添加为图像,因为该网站一直说代码需要缩进谢谢 主要活动[主要输出] [2]第二个活动[第二个活动输出][4]

0 投票
1 回答
41 浏览

android - 如何防止使用以前的 InstanceState 数据重新启动活动

我有一个从我的主要活动中打开的活动。当它使用后退按钮关闭然后重新启动时,它使用以前的实例状态打开,而不是像新的一样打开。

主要活动

表演活动

我敢肯定,我缺少一些简单的东西。

总之:我希望应用程序在屏幕方向更改时表现良好,但是当用户按下后退按钮时,我希望之前的状态消失。

0 投票
1 回答
34 浏览

android - Espresso 测试在解组时导致“ClassNotFoundException”(在基本应用程序上重新生成)

在 espresso 测试期间,当使用保存的实例状态重新创建活动时,似乎总是抛出这个解组异常。我用一个非常基本的安卓应用程序复制了它。以下是步骤:

  1. 创建一个包含两个活动的 android 应用程序,每个活动都有一个按钮。第一个活动上的按钮打开第二个活动。第二个活动上的按钮关闭当前活动。

  2. 添加一个 espresso 测试,它只是打开第一个活动,单击按钮(打开第二个活动),然后单击第二个活动上的按钮(完成第二个活动并返回第一个活动)。

  3. 在您的模拟器上,请务必在您的模拟器上启用“不要保留活动”。

在我的真实应用程序中,它会根据活动而有所不同,哪个类将“未知”导致解组。在这个特定的例子中,它显然是工具栏。我发现通过从保存的实例状态中删除特定条目(“androidx.lifecycle.BundlableSavedStateRegistry.key”和“android:viewHierarchyState”),它将在浓缩咖啡测试期间解决此异常,但当然不会恢复正确。我会重申,这只是运行 espresso 测试时的问题。当手动执行完全相同的测试步骤时,一切都会正确解组并且没有例外。

更改 sdk 版本似乎也无济于事。

而已。

这是所有血淋淋的代码: