问题标签 [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 投票
8 回答
22922 浏览

android - 在提交 FragmentTransaction 之前检查状态是否已保存

我有时会看到以下堆栈跟踪,用于在用户不查看活动时(保存状态后)可能发生的提交:

查看 Android 源代码,这完全有道理:

现在,我想知道是否有任何方法(除了将类变量存储在 on(Save/Restore)InstanceState 中)来检查片段是否会以不希望的状态提交,这样我可以存储事务以供以后使用在适当的时间提交。

0 投票
6 回答
40679 浏览

android - 何时调用 onRestoreInstanceState?

对不起,我的不理解,但我是 android 开发的新手。

我有一个包含活动 A 和活动 B 的应用程序,我从活动 A 转到活动 B。当我离开活动 A 时,该onSaveInstanceState方法被调用,但是当我返回活动 A 时(从同一个应用程序中的活动 B ),onCreate方法中的捆绑包为空。

我该怎么做才能保存活动 A 的先前状态?我只想存储应用程序生命周期的数据。

有人可以帮我弄这个吗?

这是我的活动 A 代码:

这是我的活动 B 的代码,当我按下按钮返回活动 A 时:

0 投票
1 回答
1804 浏览

android - 如何修复 onSaveInstanceState 中的 java.lang.IllegalStateException

什么可能导致此异常?

E/AndroidRuntime(16901): FATAL EXCEPTION: main
E/AndroidRuntime(16901): Process: com.borqs.karbonn.music, PID: 16901
E/AndroidRuntime(16901): java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
E/AndroidRuntime(16901):在 android.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1323)
E/AndroidRuntime(16901):在 android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1341)
E/AndroidRuntime(16901 ) ): 在 android.app.BackStackRecord.commitInternal(BackStackRecord.java:609)
E/AndroidRuntime(16901): 在 android.app.BackStackRecord.commit(BackStackRecord.java:587)
E/AndroidRuntime(16901):在 com.borqs.music.MusicHubMainActivity.onNavigationItemSelected(MusicHubMainActivity.java:1167)
E/AndroidRuntime(16901):在 com.android.internal.widget.ActionBarView$1.onItemSelected(ActionBarView.java:148) )
E/AndroidRuntime(16901): 在 android.widget.AdapterView.fireOnSelected(AdapterView.java:893)
E/AndroidRuntime(16901): 在 android.widget.AdapterView.access$200(AdapterView.java:48)
E/AndroidRuntime( 16901): 在 android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:861)
E/AndroidRuntime(16901): 在 android.os.Handler.handleCallback(Handler.java:808)
E/AndroidRuntime(16901): 在android.os.Handler.dispatchMessage(Handler.java:103)
E/AndroidRuntime(16901): 在 android.os.Looper.loop(Looper.java:193)
E/AndroidRuntime(16901): 在 android.app.ActivityThread.main(ActivityThread.java:5299)
E/AndroidRuntime(16901) : 在 java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(16901): 在 java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(16901): 在 com.android .internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
E/AndroidRuntime(16901): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)^ME
/AndroidRuntime(16901 ) ): 在 dalvik.system.NativeStart.main(Native Method)

这是我的 onSave 实例代码

这是我的导航代码

0 投票
3 回答
3200 浏览

android - Android java.lang.IllegalStateException 在 onRequestPermissionsResult()

我正在使用 sd 卡,因此试图在运行时获得许可。这是代码:

一旦我允许权限,它就会抛出“失败交付结果 ResultInfo{who=@android:requestPermissions:, request=111, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (有额外的)}}活动{com.kaushik.fileexplorer/com.kaushik.fileexplorer.MainActivity}:java.lang.IllegalStateException:在onSaveInstanceState之后无法执行此操作“。这是详细信息日志:

该代码有什么问题?

0 投票
1 回答
358 浏览

android - Android:在某些情况下仍然受到“onSaveInstanceState 后无法执行此操作”的困扰

我们使用 Dialogfragment 来显示一些对话框,有时这些会导致“IllegalStateException:onSaveInstanceState 后无法执行此操作”。

在过去,这种情况经常发生,我可以通过编写 DialogHelper 来显示/关闭对话框来减少此 IllegalStateException 的数量。

不幸的是,有时我仍然会收到有关此问题的崩溃报告并再次查看它,但我无法找到最终正确解决此问题的方法。

目前报告的崩溃发生在单击按钮时,我们想显示一个对话框(例如 DateSliderDialog),但我无法重现崩溃:/。

它调用 DialogHelper.showDialog(...) 方法

如您所见,我已经在检查:

  • 活动结束了吗?
  • Activity 是否正在运行(通过 Activity 上的标志)?

有谁知道为什么这仍然发生以及如何解决它?

感谢您的建议和回答

0 投票
2 回答
667 浏览

java - 在Android中调用finish()时是否可以保存活动状态?

startActivityForResult习惯从我的第一个活动切换到第二个活动。在第二个活动中,有多个复选框供用户选择。我从第二个活动中得到结果并调用finish().

但是如果用户改变主意并再次打开第二个活动,它将被重新创建并且复选框将被取消选中。

我怎样才能避免这种情况?调用时是否可以保存复选框的状态finish()

0 投票
1 回答
167 浏览

android - 保存recyclerview状态时出现异常

我得到了例外

“引起:java.lang.NullPointerException:尝试在 onSaveInstanceState 上调用空对象引用上的虚拟方法 'void android.os.Bundle.putParcelable(java.lang.String, android.os.Parcelable)'

0 投票
1 回答
476 浏览

android - Android - 在应用程序实例中保存实例状态(TransactionTooLargeException)

如果宗地大小超过限制,Android 7.0 在恢复实例状态时开始抛出 TransactionTooLargeException。

但是我的应用程序必须保存没有大小限制的加载内容。所以很容易导致这个错误。

在应用程序实例中保存实例状态是否安全?

Activity在后台时会被删除吗?

有没有办法在不抛出这个异常的情况下保存大数据?

0 投票
0 回答
136 浏览

android - onSaveInstanceState 方法中的空 Bundle

我在 gridview 中使用 volley 显示来自 moviesdb 的图片。下一步是在横向模式下也有该网格视图。所以我背后的逻辑是将包含数据的列表作为键值对存储在 onSaveInstantState 方法中,如下所示:

日志输出给我 20 的大小,这是正确的。但是,当我使用调试器时,该行

给了我一个空包。这很奇怪!图片列表工作正常,可以看到里面有什么。有什么想法有什么问题吗?

这是我的代码。

谢谢,

西奥。

0 投票
1 回答
795 浏览

android - 在后台杀死应用程序时,Bundle savedInstanceState parcelable 对象为 null=null

我正在尝试在后台被杀死后恢复我的应用程序。尝试访问“config”变量时它总是崩溃,因为它是空的,即使它已经保存在 onSaveInstanceState 上(它总是这样,我已经在调试模式下对其进行了测试,并且外州在它的地图中有对象)。

真正让我感到困惑的是,这在旋转情况下非常有效。所以我认为从包裹中构造对象没有任何问题。当我在后台终止应用程序时,它只是不起作用。

当我在后台杀死应用程序后在 onCreate 中记录 savedInstanceState 时,Config.BUNDLE 返回 null=null(无键,无值),但类似对象的 Account.BUNDLE 完好无损。

此外,我尝试将另一个 String 对象添加到 savedInstanceState 并且它也被正确保存。