问题标签 [onsaveinstancestate]

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 投票
0 回答
107 浏览

android - 保留视图 ID 范围

是否可以在 Android 中保留一个 id 范围(不是单个 id)?

如果我可以在特定名称下保留给定数量的 id,那么根据我自己的标准,我可以生成与 android 可能分配给视图的任何其他 id 不冲突的可预测动态 id。

例如,如果我可以为我的自定义视图保留 10,000 个范围CustomerView(假设最多可以滚动 10,000 个项目),那么基于保留的 id 前缀,我可以生成一个有保证的唯一且可预测的 id不与我的完整视图层次结构中的任何其他视图 ID 冲突。

这样,我的保存和恢复工作与我的视图层次结构中可能存在的其他视图无关,因为保存恢复完全与视图 ID 相关联。

为了更好地理解,假设我有一个名为的自定义视图CustomerView,并且我在 name 下总共保留了 100 个 id custom_view_id_bag

如果 Android 允许此预订,我集合中索引 10 处的客户将始终获得custom_view_id_bag+的 id,10而不管视图被重新创建的次数(这是 的问题View.generateViewId())并且此 id 保证在任何视图中的所有视图中都是唯一的我的自定义视图所在的视图层次结构。

这样,我可以保证我的onSaveInstance&onRestoreInstance可以正常工作,而与 Android 在其他地方分配的 ID 无关

问题View.generateViewId()在于它会生成新的唯一 ID 但不可重复的 ID。但恢复实例仅适用于可重复的 id。

此外,问题ids.xml在于,您只能预订已知数量的项目。

用例:您有动态数量的视图,并且希望为同一视图设置相同的 id,而与调用onDestroyView&的次数无关。onCreateView

0 投票
2 回答
278 浏览

android - savedInstanceState 给了我一个错误的值

我有一个秒表应用程序,它只有一个活动。三个按钮启动、停止、重置和一个显示计时器的文本视图。这是我的代码:

我想将我的一些变量保存在 onSaveInstanceState 中,以便在改变方向后再次使用它们。正如您在代码中看到的,日志消息显示方向更改前后的 mNumberOfSeconds 和 mRunning 的值。并且在方向更改后 mNumberOfSeconds 会给我 0 而不是我保存的值。但是 mRunning 给了我正确的价值。谁能给我任何解决方案?

0 投票
1 回答
1126 浏览

android - 使用具有相同 id 的两个视图恢复片段

我有一个复杂的布局要实现。它有 19 个部分,可以根据用户先前输入的大量参数显示或不显示。为了简化代码并且不显示未使用的部分,布局是动态创建的。

一切都在一个片段中。该片段有一个用作容器的 LinearLayout,并且在创建片段时,我会生成所有必要的部分。

每个部分由其自己的本地适配器管理,该适配器负责扩展该部分的布局并将其添加到容器中。

一切正常。问题是 2 个部分具有完全相同的结构,因此它们共享相同的 xml 布局。因此,两个部分的内部视图具有相同的 ID。这不是问题,因为该部分是在其适配器中本地管理的。当我转到下一个片段然后回到这个片段时,就会出现问题。系统尝试恢复视图的先前状态,因为这两个部分具有相同的 id,所以当第二个部分恢复时,它的值也设置为第一个。

是否有任何解决方案来管理它或告诉片段不要恢复其状态(因为一切都是手动重新加载的)。

这是当前结构的一个简单示例:

片段xml

节 xml

片段代码

适配器代码(两者的想法相同)

0 投票
1 回答
284 浏览

android - Minimize App Produces onSaveInstanceState 后无法执行此操作

我正在通过改造发出异步请求,在请求中间我最小化应用程序并使应用程序崩溃......

我的日志错误:

如果请求返回成功,这是我调用的方法:

有人能帮我吗?

0 投票
1 回答
483 浏览

android - 完成()与开始活动()

根据 Android 文档,finish() 完全符合“后退”按钮的功能。所以基本上当我调用finish()时会调用onStop()。

我试图覆盖 onStateSaveInstance() 以保存当前状态,但它从未被调用。但是,如果我通过创建新 Intent 并使用 startActivity() 转到上一个活动,则会调用 onStateSaveInstance() 方法。这有什么原因吗?

0 投票
0 回答
57 浏览

android - 隐藏片段不会丢失状态,但是在 onSaveInstanceState 上隐藏片段时状态丢失,为什么?

我的应用程序有一个带有 4 个选项卡的 ‍‍‍‍<code>BottomNavigation,每个选项卡都有一个片段,并将所有这 4 个片段添加到FragmentManager. 选择此选项卡时,我隐藏了其他片段,并显示此选项卡的片段。
我的问题是,当屏幕旋转时,隐藏的片段不会丢失状态,而显示选项卡会丢失状态
我尝试隐藏显示片段onSaveInstanceState并显示它,onCreateView但它没有用!
为什么隐藏片段保存了自己的状态而显示片段丢失了?以及如何使用此功能来保存显示片段的状态?

我的应用程序使用嵌套片段,我有 4 个主要片段并在该片段中显示另一个页面我用其他片段替换它并将替换的片段保存到 backstackchildFragmentManager以保存每个选项卡的 backstack。
当我旋转屏幕时,只显示选项卡回到第一个片段,就像第一次显示这个选项卡一样,但其他选项卡保存它们的统计信息!我想像其他人一样保存显示片段的状态,我该怎么做?

0 投票
1 回答
51 浏览

android - 如何在手机方向上保存我的数据?

我很难让我的应用持久化。当我旋转手机时,屏幕上的数据不会改变。但是在我单击一个按钮以检索一个新片段后,我收到一条错误消息“在 onSaveInstanceState 之后无法执行此操作”。我用谷歌搜索并看到了类似的问题,但我仍然不知道如何处理和解决这个问题。

我有一个活动类、一个控制器类和两个片段类。活动类有一个带有 2 个按钮的导航查看器,用于触发片段事务。也就是说,在每次单击按钮时,它将用按钮侦听器中设置的片段替换当前片段。我的控制器类初始化系统,片段只是 UI。

我的活动课

我的控制器类

片段_收入:

片段_摘要:

我已经从我的类中删除了所有头文件和一些方法,因为我认为它们与这个问题无关。

这是错误日志

0 投票
1 回答
2091 浏览

java - android旋转后如何保留我的RecyclerView?

当我旋转我的设备时,我的活动实例被破坏,这会启动一个新的 onCreate。我不知道如何在屏幕定向后重新填充我的 RecyclerView。我已经尝试了一些涉及 AndroidManifest: 的解决方案:android:configChanges="keyboardHidden|orientation"以及onSaveInstanceState, but could not get it to work. I have addedonSaveInstanceState andonRestoreInstanceState` 基本代码来解决我的问题,目前它没有做任何事情。

谢谢

MainActivity.java

0 投票
1 回答
398 浏览

android - java.lang.IllegalStateException - 在 onSaveInstanceState 之后无法执行此操作

我收到了来自 fabric.io 的以下崩溃报告(主要是在我添加了一个可以从我的 SlidingMenue 加载到我的应用程序的 SettingsActivity 之后):

发布 pendingRunnable 的代码最近没有更改,反正它开始接收异常。

这是我的 MainActivity.java

关于这个问题的原因有什么想法吗?

0 投票
1 回答
472 浏览

android - 如何使用注释保存片段状态?

我有一个小项目,一个活动和两个片段。我从一个新项目的“底部导航活动”示例开始。

我使用 Android 注释(https://github.com/androidannotations/androidannotations/wiki)注入我的片段,它显示正确但是当我旋转时,我丢失了所有信息并且应用程序显示第一个片段,即使我显示第二个。我试图从带有 Bundle 对象的编辑文本中保存我的数据,在“onSaveInstanceState”方法中,我在“onActivityCreated”或“onCreate”方法中取回它,但在他们的方法被重新调用和我的数据之后消失。

我不知道如何保存显示的片段以及如何使用 android 注释重新显示它。

在我的 Activity 类中,我有这些方法:

在我的主要片段中:

所以我的问题是如何保存我的片段、它的数据以及显示哪个片段?