问题标签 [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 回答
166 浏览

android - 自定义偏好 isPersistent()

我使用android 的简要指南和一些谷歌搜索编写了自己的号码选择器偏好。我的问题是关于 onSaveInstanceState() 方法。在 google 的教程中,建议我们使用方法 isPersistent() 来确定首选项是否是持久的,如果是,则返回超状态。我没有这样做,因为在这种情况下,如果我将数字选择器滑动到一个新数字然后旋转屏幕,旋转后的版本将返回到持久值。如果我删除此条件,则一切正常。但是,检查其他首选项的源代码,例如edittextpreference,即使我将值更改为未保存的值然后旋转屏幕,这种情况也存在并且状态被保存..有人可以解释一下吗?这是我的代码:

谢谢:)

0 投票
1 回答
915 浏览

android-fragments - onSaveInstanceState 后无法执行此操作

以下是我的堆栈跟踪:

这是我的代码:

这里的对话框是一个包含视图寻呼机的片段。

这个问题只出现过一次。让我知道如何解决它。

0 投票
1 回答
904 浏览

android - 使用 Parceler 保存 Android Activity 或 Fragment 状态

我正在使用parceler库。我用 this 制作了一个复杂的对象。正如它所说,它使对象可打包,所以我想用它来保存片段状态。

这是我的模型

在我的片段中,我有这个

但是当我试图把它放进去时onSaveInstanceState

我想在 onCreate Like 中获得价值

我怎样才能用这个库实现这一点?

0 投票
3 回答
508 浏览

android - 更改配置时无法在 Android 中保存片段状态

这种类型的问题在 SO 中被问过很多次,我已经尝试了所有这些,但无法实现我真正想要的。在我的应用程序中Fragment,在那个片段中我有一个recycler视图。recyclerview将由我从 API 获得的数据进行操作。

我想要的是,当旋转发生变化时,应用程序不会再次调用 API。为了实现这一点,我知道我必须将数据放入onSaveInstanceState,如果我想保存一个复杂的对象,那么该类必须是实现的Parcelable。我已经完成了推荐的一切,但无法实现我想要的。

我在这里分享我的代码,我创建了一个简化的例子。

SimpleFragment.java的代码

SimpleFragment 的布局文件:simple_fragment.xml

这是我的数据模型TestModel.java的代码

我的适配器类:SimpleAdapter.java

适配器single_row.xml的单行布局代码

这些就是我所做的,如果 getTestModelList()再次调用 SimpleFragment 中的更改方向方法,我想避免这种情况;在实际应用场景中,此方法将执行一些 API 调用。我想保存ArrayList<TestModel> testModelList.

0 投票
2 回答
62 浏览

android - 方向改变时保存 StreetViewFragment 的状态

我正在尝试将 StreetViewPanorama 的当前位置保存在 StreetViewFragment 中,例如,如果用户最初处于 Portrait 状态并通过点击箭头更改 StreetViewPanorama 中的位置并探索该区域,然后切换到 Landscape 我想设置要恢复的最后一个位置,以便用户可以继续探索该区域。目前,当我尝试访问“streetViewPanorama.getLocation()”时,streetViewPanorama 为 Null,但这不是问题。我觉得我的救国方式不对,应该有更好的方式。所以我在征求你的建议,拜托!

这是我的 StreetViewFragment 的代码:

0 投票
1 回答
332 浏览

android - 从另一个活动回来的片段娱乐

我有两个活动,A 和 B。活动 A 有一个片段 F,通过事务动态添加。从 F,我开始活动 B (F.getActivity.startActivity(intent))。当我按下后退按钮时,F 被重新创建。我可以避免吗?

如果没有,我知道我可以保存片段状态,但 savedInstanceState 包始终为空。我发现你必须在 XML 中设置一个 id,但是由于片段是动态创建的,我不知道如何设置它。

谢谢。

0 投票
1 回答
1224 浏览

android - 如何在更改屏幕旋转布局时保存字段数据

我已经阅读了很多关于数据保存实例和恢复的内容,但在我的情况下无法实现。我在申请中的情况是什么。

  1. 我正在使用 Activity (MainActivity) 并在其中调用片段让我们说 ParentFragment
  2. ParentFragment 在其中调用 ChildFragment 虽然 ParentFragment 有它自己的视图,例如 TextViews 需要名字,姓氏和年龄,在这部分下面我以编程方式调用 ChildFragment

因此,通过这种方式,我在 MainActivity 中有 2 个片段,它们一次在屏幕上显示给用户

**我想要的是 **

  1. 我希望当用户改变方向时布局也应该改变,但我也希望文本字段应该在其中保留数据。
  2. 我想在配置更改时保存更多片段变量及其数据,并在屏幕方向更改后设置新布局后检索它们。

**问题和困惑**

  1. 我不知道如果我设置 Fragment.setRetainInstance(true) 那么我的片段是否仍然能够收到 onConfiguration Change 回调?

  2. 当我旋转我的设备时,片段会重新初始化,并且我的活动也有 Asynctask 并且再次运行,我希望我的活动保持相同的数据。我怎样才能做到这一点?

请帮助我并给我一些提示。

0 投票
1 回答
130 浏览

android - 保存 RecyclerView/Notes 以供以后使用

我正在尝试重新设计我的应用程序,但我不确定最好的方法。

我目前有一个可扩展的列表视图,其中包含一些锻炼作为标题/父项。每个锻炼有 4 个子项目,代表 4 周。当用户单击一周时,它会将他们发送到具有 3 个选项卡片段(代表星期一、星期三和星期五)的新活动。这些片段每个都有一个回收器视图,根据单击的项目(自定义对象)填充数据。这是一个小例子:

这只是一个小例子。这很好用,但我想让它更容易使用。我的想法是让用户选择一个锻炼,然后将每个锻炼作为一个事件添加到 Caldroid 日历中,当他们单击该锻炼时(例如,星期一),将使用我之前使用的与回收器视图相同的视图。到目前为止,我相信我知道如何做到这一切。

我的问题是,我想实现一个保存功能。因此,当用户完成 Workout 后,它会保存到 Caldroid 上的相应日期,并更改当天的 bg 颜色,以便用户知道它已完成。我只是不确定如何保存锻炼,以便用户可以回到那天并检查它,因为现在回收器视图总是被重复使用,并且根据哪一天重复使用相同的数组列表他们点击。我还想添加一个选项来做笔记,这使事情变得更加复杂..

基本上我想要它,所以当用户保存他们完成的锻炼时,它会保存该活动的每个部分、回收器视图项目(包括复选标记状态)以及该锻炼所记的笔记。

我曾考虑过使用 sqlite,但我不确定如何将带有自定义对象的 ArrayList/recyclerview 的状态保存到 sqlite 中,然后在保存项目并且用户单击特定日期后参考该状态

如果有人有任何帮助,或者可以指出我正确的方向,不胜感激!我什至不知道从哪里开始!非常感谢!

0 投票
1 回答
56 浏览

android - 开始/保持活动的最佳方式?

我正在尝试重新设计我的 android 应用程序,但我不确定对于我正在尝试做的事情来说最好的编程方法是什么。

目前,我的导航抽屉中有一个名为“我的锻炼”的页面。在这个页面中,我有一个可扩展的列表视图,每个项目都是一个锻炼项目,包含 4 个子项目(第 1 周到第 4 周)。当他们单击子项时,将打开一个带有 3 个片段选项卡(周一、周三、周五)的新活动。每个选项卡都包含一个根据单击的 exp 列表视图项填充的回收器视图。

我想更改它,以便可扩展列表视图活动称为“选择锻炼”,并且可扩展列表视图变成普通列表视图。当单击一个项目时,它会转到导航抽屉中的新页面(我的锻炼)并在应用程序中启动一个新的..“活动”。因此,用户不必去每个项目,然后是一周,然后是一天,它只会在新页面上加载第一天(使用回收站视图)。然后该页面上将有一个按钮显示“已完成”,单击后会在第二天(第 1 周星期三)显示,并一直持续到该月结束。

我很确定我可以让它与简单的意图和额外的意图一起工作。我担心的问题是,当应用程序关闭并从导航抽屉重新打开到“我的锻炼”时,应用程序将如何反应?据我所知,意图将丢失,因为它不再来自列表视图页面(选择锻炼)。

有谁知道在“我的锻炼”页面中保存他们正在进行的锻炼的最佳方法是什么,所以如果他们开始特定的锻炼,然后关闭应用程序,然后重新打开它并直接进入“我的锻炼”页面,这是他们离开的同一个地方吗?

谢谢!

0 投票
5 回答
2232 浏览

android - Android Activity 实例状态

有什么意义:

代替

Activity通过此更改,我能够避免每次发生配置更改(轮换、区域设置、权限切换)时困扰我的许多问题。似乎通过此更改,Activity只要配置更改触发它重新启动,就会重新启动。而且我这样做似乎并没有丢失任何数据或进程状态:所有 my Activitys 都完全恢复到它们以前的状态。

我的问题是,我以后可以不受惩罚地这样做,还是在讨价还价中失去一些东西?我真的不明白为什么会这样,它是否安全,以及它可能对我的应用程序产生什么意想不到的影响。

我在这里偶然发现了这个技巧。

相关问题:

使用 null 参数调用 super.onCreate()?

应用程序被杀死后,'Bundle savedInstanceState' 会存活吗?

活动状态实例 - 见解?

Activity的实例状态:自动存储和恢复什么