问题标签 [android-savedstate]

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 回答
499 浏览

android - FrameLayout 中的 onSaveInstanceState 导致崩溃

我有一个扩展 FrameLayout 的自定义 ViewGroup。在方向更改时,我需要保留一个 int 值。我正在覆盖onSaveInstanceState()and onRestoreInstanceState(Parcelable state)以保持旧值。我的代码如下

但我要崩溃了。

但是,如果我打电话super.onSaveInstanceState()onSaveInstanceState我如何返回我的捆绑价值?

这里有什么问题?

提前致谢!!

0 投票
2 回答
2390 浏览

android - 从保存的实例恢复片段时,如何防止editText自动填充文本?

我有一个包含并显示多个片段的活动。

当我重新输入片段时,它会自动填充所有编辑文本中的文本。所有字段的文本也相同。

例子:

打开片段,在两个editText中填入文本:
CustomEditText1: [______]
CustomEditText2: [_acb__]
CustomEditText3: [_qwe__]

单击返回按钮并重新输入片段
CustomEditText1: [_qwe__]
CustomEditText2: [_qwe__]
CustomEditText3: [_qwe__]

这是我在片段中覆盖的方法:

通过调试,我可以看到 editText 通过在覆盖的 OnTextChanged 内设置断点来设置文本。

这是该断点的堆栈跟踪: (NASEditText 是我的自定义视图)堆栈跟踪

两个问题/疑问:

  1. 当片段恢复时,如何防止活动/片段/编辑文本填写字段中的文本?
  2. 为什么要为所有字段填写相同的文本?
0 投票
2 回答
645 浏览

android - 在应用 XML 属性之前恢复视图状态

我有一个自定义视图,假设这是它的代码:

很简单。我的自定义视图从 XML 读取属性并应用它们。这些属性在配置更改时保存和恢复。

但是如果我有两种不同的布局,例如两个不同的方向:

我的问题是,当更改设备方向时,视图状态被保存为可见并启用,但现在 XML 布局状态视图也不应该有。构造函数在 onRestoreInstanceState 之前被调用,并且 XML 属性被保存的状态覆盖。我不希望这样,XML 优先于保存的状态。

我做错了什么?解决这个问题的最佳方法是什么?

0 投票
1 回答
265 浏览

android - 嵌套 RouterPagerAdapter 不恢复旋转状态

根控制器,它有一个RouterPagerAdapter,主机控制器 A 有它自己的RouterPagerAdapter

控制器 A1 由控制器 A 托管

轮换后,根控制器、A 和 A1 收到它们的onSaveInstanceState/onSaveViewState,但 A 和 A1 都没有收到它onRestoreInstanceState/onRestoreViewState

为什么会这样?确保所有孩子的状态恢复的正确实施是什么?

0 投票
1 回答
164 浏览

android - Android 和 Dagger 2 子模块

如果我将 Dagger 2 与作用域子模块一起使用,它可以更容易地不在活动之间传递 parcelables,但是如果应用程序经历进程死亡并且我们的对象图被破坏,你如何处理从中恢复?

我唯一能想到的就是加倍并使用您的作用域依赖项以及在 Bundle 中放置足够的数据来重新创建图表。这样,如果您发现应该存在的内容为空,这意味着应用程序已被终止,请使用捆绑包中的状态来尝试重建图形。

还有比这更好的方法吗?在我看来,这部分否定了使用 Dagger。

0 投票
0 回答
62 浏览

java - 试图保存条件

我有一个 RemoteCar 应用程序,可以调节空调、启动引擎等。在我的 MainActivity 中有一个 FuelBar 和一个 SeekBar(AC)。我想保存这些实例以供下次运行。例如,当我将空调设置为 20° 并关闭应用程序时,我希望空调打开 20°,就像我离开它的方式一样。但不知何故,我把编码搞砸了,以至于它甚至不再启动,你能解释一下我错过了什么吗?

在 C++ 中,我可以轻松地打开一个文件并立即关闭它,但是“close()”方法不太有效。我也很欣赏与此主题相关的任何信息,我可以在其中阅读。

保存方法“saveInfo”并在 onStop 中我希望它保存当前状态。

日志猫:

0 投票
1 回答
380 浏览

android - 保存列表 to instance state with Parcelable

I have the following models:

GitItem:

    public class GitItem implements Serializable, Parcelable {
        public int id;
        public String nam

I have the following models:

GitItem:

and GitOwner:

and then in MainActivity.java I have a List<GitItem> data; which is bound to my RecyclerView.

Basically what I am trying to achieve, is to store current state of my List<GitItem> when I change Activity or simply rotate device. Unfortunately, even though I have implemented Parcelable (as suggested by other posts), I was unable to store the instance.

Any help in this matter would be highly appreciated.


You have not implemented the complete body of Parcelable functions i.e writeToParcel in GitOwner and GitItem class

In GitOwner class

and inside GitItem use writeParcelable to write and readParcelable to read GitItem object otherwise it won't be persisted and restored

0 投票
1 回答
718 浏览

android - 销毁并重新创建后未保存启用的 TextInputLayout

简单的布局:

textInputLayout如果活动是第一次初始化,我将禁用:

我已经检查了“不要保留活动”选项。

所以最初当活动启动时,TextInputLayout被禁用。当我按 home 并返回时,它再次重新启用。

所以我的问题是:

  1. 这是预期的行为吗?
  2. 重新创建时如何保持TextInputLayout禁用状态?

编辑:

这似乎也发生在EditText

0 投票
2 回答
11977 浏览

android - Android 视图 - 在 Activity 中自动保存和恢复的内容

我是 Android 的初学者。

在 Android 中,一些通用元素可以在 / 中自动保存/onSaveInstanceState恢复onRestoreInstanceState

例如,一个EditText保存/恢复Text属性,一个RatingBar保存/恢复Rating属性...

我从一些测试中看到,但我在文档中找不到任何关于此的内容。

在没有我干预的情况下,我如何知道隐式保存/恢复了什么?

例如,我在哪里可以找到EditText.Text自动保存/恢复的?

我特别不想测试所有属性。


从 JRG 答案编辑:

https://developer.android.com/guide/components/activities/activity-lifecycle.html

保存您的活动状态当您的活动开始停止时,系统调用 onSaveInstanceState() 方法<...> 此方法的默认实现保存有关活动视图层次结构状态的临时信息,例如 EditText 小部件中的文本或 ListView 小部件的滚动位置。

我怎么知道保存/恢复的默认实现是什么?

重读 JRG 答案后的第二次编辑:

默认情况下,系统使用 Bundle 实例状态来保存关于你的活动布局中的每个 View 对象的信息(例如输入到一个 EditText 小部件中的文本值)。

默认实现保存/恢复元素视图的所有状态。

0 投票
1 回答
1893 浏览

android - savedInstanceState 不为空的情况

如果我没有明确地调用onSaveInstanceState(),哪些是可能性,什么时候savedInstanceState不为空onCreate

我看到一个选项,当系统在崩溃后重新创建我的应用程序时 - 然后savedInstanceState不为空。

还有哪些其他选择?