问题标签 [onrestoreinstancestate]

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

android - Android:打开相机的裁剪意图(拍照后)会杀死 Nexus 7 和 Moto G 中的调用者 Activity/App

我在nexus 7和moto G中遇到了本机相机应用程序的问题。从应用程序中我打开相机意图并且在拍照后我称之为com.android.camera.action.CROP意图。但是当我点击保存按钮时,它不会返回到我的活动/应用程序。

我读到由于内存不足,Android 会杀死不在前台的活动。所以我将状态保存在onSaveInstanceState.

以下是一段代码:

调用从相机拍照的方法:

要求裁剪的方法:

活动结果:

onSaveInstanceState & 在 restore 上恢复值:

我观察到,除了whatsapp之外,大多数调用相机意图的应用程序在这些(Moto G 和 Nexus 7)设备中都存在相同的问题。我不确定他们如何处理这种情况。

谢谢你。

0 投票
2 回答
5608 浏览

android - 我应该在 onCreate 还是 onRestoreInstanceState 中恢复 savedinstancestate?

我有一个为结果启动其他活动的活动,因此当结果返回时,该活动可能已被销毁或重新创建。

我已经覆盖了 onSaveInstanceState 以便添加需要保留和恢复的数据。

当 Activity 被销毁并重新创建时,onCreate 会被传递到 savedInstanceState 包;而且onRestoreInstanceState()被调用并传递了同一个包。

那么我应该把从包中提取数据并恢复状态的代码放在哪里呢?在 onCreate 中还是在 onRestoreInstanceState 中?后者是否保证总是被调用?

是否可以在不调用 onCreate 的情况下调用 onRestoreInstanceState?(例如,如果活动停止并重新启动但没有销毁和重新创建)?

0 投票
3 回答
1538 浏览

android - 在 onActivityResult() 之后调用的 Android openFileChooser onCreate()

我有一个网页视图,其中一个页面上有一个上传照片按钮。我找到了一些代码来实现文件选择器(Android,为什么这么难????),如果我选择画廊一切正常。如果我选择 10 次中的第 1 台相机,它可以工作。但大多数时候,当我拍照并单击保存(这都是在相机活动中)时,webview 会加载应用程序启动时加载的第一页。似乎onActivityResult()没有调用,而是调用它onCreate(),这弄乱了我的应用程序。可以举个例子说明我拍照后如何恢复webView的状态吗?(也许我应该提到我在 WebView 中登录)。

这是 WebChromeClient 类:

这是 onActivityResult 方法:

0 投票
5 回答
4618 浏览

android - 何时使用 getSharedPreferences 与 savedInstanceState?

我试图弄清楚何时使用保存的实例状态与从共享首选项文件加载信息。我有两个变量要保存,时间和分数。我想确保如果用户返回游戏屏幕,无论是从 onPause 状态还是 onStop,他们的分数和时间都会被保存和恢复。

我有三把钥匙:

如果游戏暂停并显示一个对话框,当用户返回时我应该这样做

还是我应该做类似的事情:

总的来说,我需要帮助了解生命周期以及何时存储重要信息,例如游戏的时间和分数。我只需要避免用户在无法完成游戏的情况下必须重新启动。

最后,我假设 sharedPrefs 保存到一个 xml 文件。这个对吗?有没有人有我的 sharedPrefs 应该如何显示的示例 xml?保存到 savedInstanceState 包的键是否也存储在 xml 文件中?如果是这样,有什么例子吗?如果不是,信息存储在哪里?

谢谢!


编辑:

好的酷豆。谢谢!还有一个问题,当为存储在 sharedPreferences 中的键值对定义键时,例如

为什么要存储“分数”字符串?什么时候会用到这个?我总是使用类似的东西将一个值放入 key_value 对

并使用检索

为什么键 ARG_SCORE 需要一个名称?我什么时候需要名字?它必须保持类型字符串吗?

0 投票
1 回答
170 浏览

android - Android:如何确保视图具有唯一的 ID,以便 onRestoreInstanceState 工作

android 开发人员指南说,您的活动中的视图需要具有唯一的 id 才能在 onRestoreInstanceState() 中恢复它们。这是真的吗,还是足以确保对于每个视图,它的所有子视图都有不同的 id?

如果整个层次结构中的所有视图都应该具有唯一的 id,那么就不可能将相同的布局资源膨胀两次并将两个副本添加到同一个视图组。相反,您必须以编程方式完成所有操作,并为您使用的每个视图手动分配唯一的 ID。

0 投票
4 回答
3731 浏览

android - Activity 销毁后 ImageView 上的图像丢失

我正在尝试制作一个应用程序,我可以让用户选择一张图片以显示在他们的个人资料上。我可以在 imageview 上浏览和设置他们选择的图像。但是一旦活动被破坏,图像就会丢失。我试图实现 onSaveInstanceState 但它仍然是一样的。我想知道我是否正确使用它。我希望你能帮助像我这样的新手。提前致谢。这是我正在使用的代码:

顺便说一句,您可能已经注意到,我尝试使用不同的方法,而不是在 oncreate 之后使用 onRestoreInstanceState。我从另一个问题中找到了答案,您也可以在 oncreate 中实现它。我使用它是因为每当我声明函数 onRestoreInstanceState 时,都会要求我删除 @Override 注释。

0 投票
1 回答
1334 浏览

android - Android rotation: Why fragment not restored by TAG?

I have an activity called MainActivity with a fragment inside called 'HomeFragment'. I want to restore fragment after screen rotation, however something seems missing. I followed below process:

  1. save fragment by using getSupportFragmentManager().putFragment(...) during onSaveInstanceState
  2. try to restore fragment by fragmentManager.findFragmentByTag during onCreate (after checking that bundle is not null)

However findFragmentByTag returns null.

Here is code snippets inside MainActivity:

0 投票
1 回答
30 浏览

android - 变量需要保存

我正在制作一个包含表单的应用程序,每当数据单击一个按钮时,就会从 EditText 中的 BD 加载,但每次我按下不同的按钮时,其他 EditText 都会被清除,我尝试使用:

}

抱歉,如果我没有解释清楚,每次他们更改 Activity 变量时我都需要它并且我没有删除。有什么建议么?谢谢!

0 投票
1 回答
431 浏览

android - onRestoreInstanceState() 和唯一视图 ID

android 开发者指南说,Views在你的活动中需要有唯一的 id 才能在onRestoreInstanceState(). 这是因为onRestoreInstanceState()通过SparseArray使用 ids 作为键来工作。

我觉得这非常奇怪,因为很多标准的 Android 方法都鼓励重用 id。例如,a 的所有构造函数都将ArrayAdapterresourceId 作为参数,以便为 a 中的所有子级扩展相同的 xml 资源ListView。同样,如果您<include layout ...>在 xml 中使用,您正在重用视图 ID。

因此,除非开发人员实际上没有使用标准的、推荐的方法,否则我看不到有很多应用程序实际上满足了所有应用程序都Views具有唯一 ID 的要求。

这个结论是错误的吗?另外,onRestoreInstanceState如果 id 不是完全不同的行为是什么,这种行为是否可以接受?

编辑

相关报价出现在页面http://developer.android.com/training/basics/activity-lifecycle/recreating.html上,内容如下:

注意:为了让 Android 系统恢复 Activity 中视图的状态,每个视图必须有一个唯一的 ID,由 android:id 属性提供。

注意:始终调用 onRestoreInstanceState() 的超类实现,以便默认实现可以恢复视图层次结构的状态。

0 投票
0 回答
290 浏览

android - 我的活动在 onCreateView() 中输入了两次,它重置了我保存的变量

我的应用程序中的活动出现了一些问题。我正在使用方法保存一些数据onSavedInstanceState()并在其中恢复onCreateView()(此活动有两个片段,并且它具有 onCreate 和 onCreateView)。恢复的数据已更正,但我无法将它们正确放入我的活动中的微调器中。

我在此循环之前、内部和之后放置了一些断点:

我可以观察到应用程序两次访问 onCreateView 方法...第一次 posSaved 变量是正确的,但第二次这个变量是 0 并且由于这个原因微调器永远不会显示保存在 posSaved 变量中的位置它显示 0 位置(默认情况下),然后就像我不使用 onSavedInstanceState 方法...

...为什么应用程序在 onCreateView() 方法中输入两次?我该如何解决这种情况?

PD。此活动也在 onCreate() 方法中输入两次。

我的活动代码

这个活动片段在这个类中被调用:

谢谢。