问题标签 [android-configchanges]

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 投票
2 回答
781 浏览

android - 如何重用 setContentView 中设置的布局?安卓

我正在尝试android:configChanges="keyboardHidden|orientation|screenSize"在我的清单中使用,以便在VideoView发生配置更改时不会丢失我的状态。这意味着我需要自己在配置中选择布局。我遇到的问题是,当我第一次初始化要在其中使用的视图时onCreate,这里:

它选择正确的布局。但是当我需要像这里一样调整配置更改的布局时:

它不使用相同的布局实例,而是重新加载它,这让我VideoView变黑了。然后我无法按任何按钮。

有没有办法重用初始布局?我试图将这样的视图设置setContentView(R.layout.activity_make_photo_video_land);为一个Activity activity对象,但 IDE 不允许我这样做,它说Activity is incompatible with void。因为如果我能获得对该视图的引用,那么我就可以重用它。还是有一种我没有看到的更简单的方法?

谢谢。

在此处输入图像描述

0 投票
1 回答
2001 浏览

android - 图像位图未保存在 onSaveInstanceState 和 onRestoreInstanceState

我的ImageView. 我在网上找到了可以帮助我整合从我的应用中拍照的代码。它所做的是离开应用程序,进入 Android 相机,然后返回照片。从这里,我将它放入一个ImageView. 一切正常,直到我不得不添加配置更改。更改配置时图像消失。

为了克服这个问题,我设法让 my VideoView(它将视图与 my 交替ImageView)来保存状态,但它的保存代码要求与图像不同。这是我到目前为止所拥有的。我试图研究解决方案,但对我来说没有任何意义。我的代码看起来不完整吗?

谢谢。

更新:

经过进一步研究,如果我在拍照时不旋转相机,则状态会被保存。如果开始方向与我返回应用程序时(拍照后)的方向相同,则应用程序的配置更改工作正常。问题是,如果我以纵向模式开始,然后单击照片按钮。这将我带到了 Android 相机。然后我决定我想要一张风景照片,所以我旋转它然后拍摄照片。我按下确定,然后我回到应用程序。一旦我到达,因为我现在处于横向模式,所以我ImageView是空白的。

另外:我在& emImageBitmap内部做了一个日志,它们都是空的。但为什么?可能是因为位图是在从相机返回之前才创建的?那么我应该如何在配置更改时保存它呢?如此迷茫。onSaveInstanceStateonRestoreInstanceStat

我的两种保存状态方法:

我完整的参考类 MakePhotoVideo.java:

0 投票
2 回答
52 浏览

android - 开始时隐藏的视图在显示视图后不再显示,然后配置更改

这个对吗?

  1. 在布局中有一个标记为不可见或消失的复选框。
  2. 创建后,将复选框标记为可见(即选择按钮后)。
  3. 执行配置更改(例如旋转设备)。
  4. 先前标记为可见的复选框未显示。

但是,复选框的选中状态保持不变,这让我很困惑,保存了哪些信息,没有保存哪些信息?

确保配置更改后视图保持可见的最佳方法是什么?

谢谢,扎克

0 投票
2 回答
1186 浏览

android - Android - 动态更改语言

在我的 Android 应用程序中,我想动态更改默认语言。我已经实现了这个方法:

在清单中,我将这一行添加到我的 MainActivity 中:

我也试过这个:

此解决方案效果很好,但是一旦屏幕旋转就会恢复到默认配置并恢复语言。

我该如何解决这个问题?

0 投票
0 回答
975 浏览

android - 更改区域设置而不刷新和重新加载布局/片段

如何在不重新加载布局的情况下更改语言环境/语言?我们必须执行以下操作来动态更改语言环境

但就我而言,我在片段中有片段。我的应用程序结构Activity有 8 个可替换的片段,每个片段又有 4 到 5 个可替换的子片段。

我有一个按钮来更改我的主要活动中的语言。因此,当用户更改语言时,几乎不可能加载特定的片段。

请让我知道在上述情况下更改语言环境的最佳方法是什么

0 投票
0 回答
1147 浏览

android - 当一个活动由于配置更改而被破坏时,它的加载器是否也被破坏了?

来自Loaders 的开发人员指南

在配置更改后重新创建时,它们会自动重新连接到最后一个加载器的光标。因此,他们不需要重新查询他们的数据。

从这篇关于 Loaders 的博客文章中

当 Activity 被销毁时,Activity 会指示其 LoaderManager 销毁并关闭其 Loader(以及与它们关联的任何资源,例如Cursor)。

问题是哪一个是正确的?当一个活动由于配置更改而被销毁时,(1) 其加载器 (2) 与其加载器关联的资源会发生什么,例如Cursor.

0 投票
2 回答
432 浏览

android - 为什么当 android:configChanges="orientation|screenSize" 在清单文件中时不调用生命周期活动方法

我已经覆盖了方法onStart(), onResume(), onStop(), onPause()in MainActivity。我正在使用log.d()命令来监视何时调用这些方法。

当我android:configChanges="orientation|screenSize"在清单中使用时,不会调用我的重写方法。为什么会这样?

0 投票
0 回答
310 浏览

android-fragments - 配置更改后无法恢复第二个 fragmentStatePagerAdapter

我有一个问题让我生病了好几天。我的应用程序仅包含一个带有几个主要片段的活动。我有 2 个 FramentStatePageAdapter,第一个在选择一个项目后被第二个替换。但是在方向更改后,应用程序崩溃了,因为第二个适配器中的片段管理器无法获取嵌套片段。我使用这种方法来替换主要片段:

最初,我替换了一个名为 HomeTabsFragment 的片段,该片段包含一个带有 3 个选项卡和 3 个嵌套片段的 FragmentStatePagerAdapter。这就是我在 HomeTabsFragment 中创建适配器的方式:

这是第一个适配器:

用户点击 MusicGenreFragment 的一项后,HomeTabsFragment 被 MusicGenreDetailFragment 替换,MusicGenreDetailFragment 包含一个在其中初始化的适配器:

这是 MusicGenreDetailAdapter:

我重写了方法restoreState(Parcelable state, ClassLoader loader)并且在配置更改后应用程序在此处崩溃。我尝试调试,发现此适配器的片段管理器中没有活动片段。如果我注释掉restoreState中的所有语句,则会显示第一个适配器。

这是日志猫:

             ……

任何人都可以帮我解决这个问题吗?

0 投票
2 回答
44 浏览

java - 更改配置后关闭对话

我目前正在编写一个蓝牙应用程序,只允许用户在肖像模式下使用它。但是,还有一些其他原因导致配置更改迫使我向用户显示蓝牙连接已丢失。

在连接到设备时,我会显示一个提示密码的对话框。如果在此对话框可见时发生配置更改,我想将其关闭。因此,我调用了一个辅助方法onSaveInstanceStateonDestroy以及onCreate(如果保存的实例状态不为空)。

然而,对话仍然显示给用户。我已经阅读了类似的问题,但无法找到解决此问题的方法。

我很感激任何帮助。提前致谢!

0 投票
2 回答
1340 浏览

android - 方向从横向更改为纵向后,RecyclerView 位于中间而不是顶部

我在片段中使用了recyclerview。如果 Activity 的 configChanges 包含方向,则在手机方向从横向变为纵向后,回收站视图会出现在屏幕中间。但是,它应该始终位于顶部。如果 configChanges 不包括方向,它总是出现在方向更改的顶部。

你知道这是什么原因吗?

这是活动布局

这是片段布局替换上面的框架布局。