问题标签 [onrestoreinstancestate]

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 投票
1 回答
451 浏览

android - 在 Android Dialog 片段 show() 方法的 TAG 参数中传递什么

希望你一切顺利。

我创建了一个对话框片段并在实例上调用了 show()。我将自定义标签传递给 show() 的参数。该片段不需要其他参数。在配置更改、调整应用程序窗口大小时,应用程序崩溃。

这是 DialogFragmentNavigator.java 中的一个方法:

请注意,已经使用的 DIALOG_TAG 已被硬编码为“androidx-nav-fragment:navigator:dialog:”。因此,由于我提供了自定义 TAG,因此没有找到 Fragment 是有道理的。

客户调用 show() 方法的期望是什么?应该传递什么标签来优雅地恢复片段?

注意安全!

0 投票
1 回答
180 浏览

android - OnRestoreInstanceState 在 Xamarin 中出现问题

我正在开发一个闹钟应用程序,我的布局恰好包含一个 TimePicker 视图,用于设置用户希望被提醒某事的时间。当 Activity 被发送到后台时,我似乎对保存值的方法有问题。编译器中的代码很干净,没有错误,但是当我在智能手机上调试它时,我将应用程序发送到后台,然后当恢复它时,这两种方法不会修改 TimePicker 当前时间......您的时间和贡献是非常感谢

0 投票
0 回答
30 浏览

android - 通过 Activity 更改持久化 RecylerView 适配器

我在一个活动(比如 A1)中创建了一个简单的回收器视图,用户可以在其中添加/删除回收器视图中的项目。我现在正试图在导航到第二个活动(例如 A2)时保存它并在返回时恢复它(A2 -> A1),但我无法这样做。从 A2 回到 A1 时,回收器视图再次初始化,丢失所有用户修改的数据。请求您的帮助。

我已经尝试过 onSaveInstanceState 和 onRestoreInstanceState 方法,但是当我导航到 A1 时,没有调用 onRestoreInstanceState。我似乎无法弄清楚这一点。任何帮助,将不胜感激。

我的代码:

0 投票
1 回答
74 浏览

android - 保存活动的整个实例

有没有简单的方法来保存整个活动实例并恢复它?
在花了 1 小时搜索互联网的各个角落后,我最终来到了这里。我还是不知道怎么做这个。

是的,我知道如何使用保存当前实例onSaveInstanceStateonRestoreInstanceState 但互联网上没有人用大型复杂编码(如动态创建的视图、许多文本视图和计算等)解释它。

每个人都只用一两个 textView 来解释这一点,我就像“有人怎么能用很少的 TextView 创建一个应用程序!?!” 如下所示:

onSaveInstanceState()


onRestoreInstanceState()


我完全可以理解上述方法。但是,如果我们完成了一个相当复杂的编码并想要保存和恢复状态我已经完成了所有复杂的编码工作并遇到了这个问题,该怎么办。
我相信会有一个简单的方法来实现这一点。请理解我的问题。帮我。
0 投票
0 回答
78 浏览

android - 在应用程序之间切换时,Android Activity 会丢失数据

我正在编写我的第一个 Android 应用程序。从本质上讲,它显示并控制了一场直接的撞球比赛的得分。我已阅读有关活动生命周期的文章,但仍有一个我不明白的问题:

当我使用正在运行的游戏切换回我的应用程序时(因此显示的分数与最初的 0:0 不同),活动有时会丢失其状态并显示 0:0 而不是我离开应用程序时的分数。我重载了方法onSaveInstanceStateonRestoreInstanceState. 当我按下设备的主页按钮时,会调用前者。后者永远不会被调用。我读过该方法仅在被调用时才onCreate被调用。onCreate尽管应用程序在切换到其他应用程序后需要比平时更长的时间来重新加载,但不会调用该方法。所以我认为活动确实得到了重建,但显然不是 byonCreate并且保存的分数不是由onRestoreInstanceState.

你能解释一下发生了什么以及如何实现所需的行为吗?非常感谢!

编辑:我被要求发布我的onCreate()onSaveInstanceState()方法。我试图以一种有用的方式缩短它们。请告诉我是否有任何不清楚或遗漏的地方。

我在方法中放置了一个“调试输出” onCreate(),但它没有出现在调试日志中。也是如此onRestoreInstanceState()onSaveInstanceState()当我按下主页按钮时,里面打印了一条消息。

0 投票
0 回答
64 浏览

android - 如何在Android上恢复自定义视图的translationX

我有一个自定义选项卡视图,它派生了LinearLayout一个 xml 布局。llIndicator在它里面我有一个视图translationX

一切正常,唯一的问题是当我试图在活动被销毁并重新创建后恢复视图的状态时。大多数属性甚至不需要保存,因为片段中的设置代码被再次调用,但我想保存选定的选项卡并恢复 translationX 属性并在没有动画的情况下恢复它。

但我似乎找不到正确的解决方案。我将选定的选项卡保存到一个包中,成功恢复它,计算正确的位置,但是当我设置translationX属性时,它什么也没做......

如果我在方法中执行它不起作用,onRestoreInstanceState()因为它发生在布局之前,所以我尝试在方法中设置一个变量并在isInstanceBeingRestored方法trueonRestoreInstanceState()设置,但没有成功。translationXonLayout()

所以我也尝试OnGlobalLayoutListner()通过将以下代码放在init{ }视图中来使用。

它仍然什么都不做......offset计算正确,我使用检查过Log.d(),并且用任何数字替换它都没有效果。

所以我尝试使用 post() 方法,如下:

我尝试将它放在onLayout()方法中(当然isInstanceBeingRestored首先检查变量),但也OnGlobalLayoutListener()没有效果。

但有趣的是,如果我使用具有足够大延迟的 postDelayed(),它就可以工作。

但显然,这个解决方案不能保留,我只是试了一下......所以我很困惑......这听起来很容易解决,但经过数小时的谷歌搜索和尝试不同的代码,摸不着头脑,我仍然无法解决不了。肯定不会这么难吧?

我究竟做错了什么?谁能指出我正确的方向?

非常感谢您的帮助。

编辑:

我发现了一些有趣的东西......如果我使用marginStart而不是translationX如下来设置它的工作位置。那会是什么原因呢?我不明白...

编辑 2: 只有marginStart在活动被破坏之前边距开始为 0 时才有效...因此,如果我设置offset为一个随机值,独立于其先前的位置,它会在正确的位置显示指示器,如果marginStart之前为 0。 .. 否则指示条出现在屏幕左侧。现在我真的迷路了......我仔细检查了计算,但它们给出了正确的偏移量......

最良好的祝愿,阿戈斯顿

0 投票
1 回答
33 浏览

java - 从一个屏幕移动到下一个屏幕时,Android Studio 复选框未选中

我是 android studio 的新手,我尝试了所有可能的选项,但无法理解为什么当我从一个屏幕移动到另一个屏幕时,当我回到上一个屏幕时复选框会被取消选中。

我在onsavedInstanceStateonRestoreInstanceState中遗漏了一些东西

下面是我的Java代码

xml代码

任何解决此问题的支持都会有很大帮助

0 投票
1 回答
34 浏览

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

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

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

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

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

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

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

而已。

这是所有血淋淋的代码:

0 投票
1 回答
45 浏览

java - 如何修复我的 onSaveInstanceState 和 onRestoreInstanceState?

我试图在屏幕旋转期间保存用户的所有值和点击,但我的按钮点击和文本视图不起作用。我花了很多时间试图弄清楚在这个方法中写什么,但都没有奏效。来自 Select your Tip 按钮的输入和 textView 输出目前未保存。应用图片