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

android - 如何在片段中保存加载的 listView 状态?

我有一个活动,带有 listView 的片段和带有每个 listView 项目详细信息的片段。我正在从 API 获取片段数据。当我返回到 listView 时,我应该如何正确保存加载日期和 listView 位置以便能够恢复它?我试图实现这个解决方案一劳永逸,如何正确地将片段的实例状态保存在后台堆栈中?但我无法正确恢复我的 listView。

我的主要活动

和 ListFragment

目前,我的 savedInstanceState 始终为空,我错过了什么?

0 投票
2 回答
1016 浏览

android - SavedInstanceState 不为空但为空

我有ViewPager一些片段,用户在其中输入不同的输入。其中一个片段包含 aDatePicker和 aTimePicker我存储(当用户选择日期和时间时)作为 JodaLocalDateLocalTime.

即使用户在片段之间滑动,我也想保存日期和时间以保持输入。这是我的代码:

在我的onCreateView

我面临的问题是,如果用户到达这个片段但没有输入任何输入,然后滑回以前的片段并来回选择日期和时间片段,应用程序在我的Log线上崩溃onCreateView

我不明白为什么如果我的 selectedDate 和 selectedTime 为 null 时尝试避免保存数据,当重新创建片段时,bundle 与 null 不同(当然键值对不存在)。

你能给我一个解决这个问题的方法吗?我将不胜感激对这种行为的任何解释。

0 投票
2 回答
40 浏览

java - 从子任务返回后执行后台任务时出错

我不确定我是否完全理解从子活动返回后需要做什么来检索数据。我不需要将数据传递给父活动。我用这个作为参考,他们确实提到了 onPause 和 onResume 以及可能的解决方案,但是我应该使用保存的首选项而不是 onSaveInstanceState 和 onRestoreInstanceState 吗?它在检查布尔值的后台任务中失败。我也用这个获得进一步的帮助。

下面的代码:

编辑:向代码添加了更多信息

0 投票
1 回答
313 浏览

java - savedInstanceState 中的值是空值或默认值

我有一个片段和一个活动,活动代码如下所示:

片段看起来像这样:

(简化代码以便更好地理解)

好的,在我的智能手机中,我有 android 7,我可以将窗口分成 2 个以显示 2 个不同的应用程序,所以当我按下这个按钮并且我的 ActivityA 和我的 FragmentA 正在执行时,我的代码的执行如下onSaveInstanceStateFragmentA被调用然后onCreateofActivityA被调用并进入部分

问题是savedInstanceState默认值是空值,例如 for stringsarenull和 for intsare 0

我认为这种行为发生在应用程序保存其状态时,而不仅仅是当我按下按钮拆分窗口时。

问题是为什么里面的值savedInstanceState是空值或默认值?我该如何修复它们?

谢谢

ActivityA中的PSonSaveInstanceState不执行,只onSaveInstanceState在FragmentA中执行,我觉得这也是一种奇怪的行为。

编辑:我认为问题在于onSaveInstanceStateFragmentA调用。但我不知道为什么不调用它。

0 投票
1 回答
536 浏览

android - 在 Activity 中设置 savedInstanceState Bundle

有没有办法手动设置 savedInstanceState Bundle ?

我需要在 savedInstanceState 模式下启动一个活动,在 onCreate 中 savedInstanceState Bundle 不会为 null 。我的观点是使用我的自定义数据恢复活动。谢谢

0 投票
1 回答
497 浏览

android - 在 Android 片段中保存实例

我有一个名为 HomeFragment.java 的片段。这是打开我的应用程序时启动的第一个片段。在这个片段中,我有一个名为“onAsyncTaskDoInBackground”的方法,它使用 JSON 从服务器获取所有数据。

我想做的是使用“savedInstanceState”,以便每次重新打开“HomeFragment.java”时不要重新下载所有数据。

例子:

用户打开应用程序并启动 Homefragment.java,下载所有数据。用户转到关于我们的页面并返回主页(Homefragment,java)再次下载所有数据。(应该不需要在同一个应用程序启动时重新下载所有数据)

HomeFragment.java

0 投票
2 回答
859 浏览

android - 如何在动态添加的片段中将自定义视图的状态保存在 RecyclerView 中?

TL;DR:我无法区分RecyclerView' 调用onBindViewHolder何时回收 aView或替换Fragment.

我确实花了很多时间在这里寻找答案,但最终没有任何效果。它所做的只是告诉我答案可能是在 using 中savedInstanceState,但我没有成功使用它。

结构 :

  • 主要片段
    • 主视图
    • 切换片段按钮

在里面MainView是一个FrameLayout,用来装一个Fragment

第一个Fragment无关紧要,但第二个Fragment是 an OverviewFragment,其结构为:

  • 概述片段
    • 回收站视图
      • 自定义项目视图
        • 文本视图
        • 更改文本颜色按钮
        • 删除项目按钮
        • ...
    • 添加项目按钮

我正在使用 aRecyclerView因为列表需要是水平的,这是我发现的最简单的方法。

期望的行为:

我希望当我单击按钮两次(更改片段然后返回它)时保持颜色更改,而不是当我从列表中删除项目然后再次添加它时。

问题 :

颜色要么一直保存,要么从不保存。onBindViewHolder在's Adapter 中使用RecyclerView来设置文本颜色不允许我区分绑定是来自片段替换(我将恢复更改的颜色)还是视图回收(我不会恢复它)

代码 :

'调用SwitchFragmentButton'方法OnClickListenerMainView

以下是颜色的管理方式(简化):

这是RecyclerViewAdapter定义:

MyItem这是CustomItemView的核心项目(每个MyItem都有它的CustomItemView,每个CustomItemView都有它的MyItem)

备注:

minSdkVersion: 19。

编辑 :

感谢@goldenb,问题已经缩小,出现了两种解决方案。

解决方案 1:

不要替换片段,而是将它们全部添加,然后显示/隐藏它们。

该解决方案以某种方式有效,但并不是真正解决问题。它避免删除Fragments,所以状态被保留。

但是,我的问题是关于如何保存然后恢复Fragment的状态,所以我不能接受这个作为答案。

解决方案 2:

覆盖OverviewFragment#onPause以保存状态,并将其恢复为OverviewFragment#onCreate.

这个解决方案似乎是合理的,我目前正在探索它。然而,它需要在我的项目中进行一些重组才能将数据从 重新定位CustomItemViewMyAdapter,因此需要一些时间。

0 投票
1 回答
666 浏览

android - 片段 savedInstanceState 不起作用

我这里有几个片段,有一个片段,当我回到它时,我想保存它的状态。我尝试在 testfragment 中执行此操作,当我单击按钮时,textview 文本将更改为“test1”(textview 的默认文本是“New Text”)。因此,textview 更改了文本,但是当我移动到另一个片段并返回到它时(HomeFragment),textview 将进入其默认状态文本(“新文本”)。所以我认为savedInstanceState它不起作用,因为如果它起作用,当我回到片段时它应该有“test1”。这是我的代码:

0 投票
1 回答
312 浏览

android - 恢复 GoogleMaps 对象状态时出现 ClassNotFoundException

从 Activity 返回后尝试恢复我的GoogleMap( ) 对象的状态时,我的应用程序一直崩溃。位于自定义 Support lib v4 ( ) 中,它本身嵌入在( ) 中。这些组件的设置是正常的。我的设备经过开发人员配置,可以在推送时销毁所有 s。mapViewmapViewFragmentMyFragmentAppCompatActivityMyActivityActivity

在推动和弹出另一个Activity时,我FragmentonCreateView(LayoutInflater, ViewGroup, Bundle state)方法被调用,并崩溃

在底部产生痕迹。

当is时,第一次创建时不会发生崩溃。启用或禁用 MultiDex 或 Proguard 的任何组合(我能找到)都无法解决崩溃。statenull

事实上,我能做的唯一一件事就是启用 Instant Run 并直接从 Android Studio 运行。在这种情况下,一切都很好。如果 Instant Run 被禁用并且我从 Android Studio 运行,则会出现崩溃。


更新:

上周,Google 发布了 Android Build Tools v5.0.1 和 Google Play Services v10.0。更新后,这个问题似乎已经解决了。但是,我将保留这个问题以供记录,以查看是否有其他想法出现。下面Aлекс的想法是一个很好的想法,我无论如何都可以尝试。


0 投票
3 回答
88 浏览

java - CountDownTimer 在关闭并重新打开应用程序后重新启动

我试图向用户展示一个CountDownTimer用户按下“开始”按钮后立即开始减少,但如果我关闭活动并重新打开它,CountDownTimer 将被重置并重新开始。

我使用这个链接来学习如何设置一个CountDownTimer.

这是我的编码方式:

即使用户关闭应用程序,请告诉我如何让计时器继续运行。