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

android - 从调用者的清单文件中读取的 Android 库

android 开发新手并要求围绕以下方面的最佳实践。

我正在为多个应用程序构建一个库。我用于库调用的参数之一是应用程序名称。我可以从父配置文件中提取它来清理 api 接口,这样就不需要到处都需要它了吗?关于传递上下文,我有同样的问题,但我想由于安全原因,这可能不是那么容易。

如果您可以阅读调用者配置,那么下一个问题是我是否应该要求将此 appname 参数添加到调用者清单中?

0 投票
1 回答
819 浏览

android - TabActivity 中的 onConfigurationChanged 问题

我有 TabActivity 以及选项卡中的其他三个活动。在清单文件中,我有一行:

<activity>TabActivity 和其他三个活动的标记中。我也覆盖了我所有的活动onConfigurationChanged(Configuration newConfig)方法。它几乎在所有情况下都能正常工作。之后,手机屏幕仅在横向模式下空白,我单击了主页按钮,接下来我想更改方向,方法 onConfigurationChanged 尚未调用。

我使用过 Toast 类,并且我知道此时已调用 TabActivity 的唯一方法 onConfigurationChanged,但未调用选项卡中当前活动的此方法。但是,当我再次更改方向时,活动选项卡中当前活动的 onConfigurationChanged 方法已被调用。我该如何修复这个错误?我的代码可以正常工作,但在这种情况下不行。

我注意到当我在 TabActivity 中切换选项卡并更改方向时会出现类似的问题。但现在我无法解释它什么时候起作用,什么时候不起作用。我陷入困境。我知道 TabActivity 的 onConfigurationChanged 方法总是在调用。但是这种在选项卡中活动的方法 - 并非总是如此。

0 投票
3 回答
1101 浏览

android - Android save certain values on rotation

I have an activity that runs asynctasks among other things, I don't want everything to be reset when the layout changes.

I put this in the activity's manifest element android:configChanges="orientation" but unfortunately the activity doesn't even switch from the landscape to portrait layout anymore when that is there!

I only halfway understand saveInstanceStates and passing Bundles around, and I'm definitely not sure how to use that with complex data objects, insight appreciated there

What I would like to do is make sure that the asynctasks don't run again, (I could save variables to disk, and do a conditional check for them before running the asynctask) if there is some android way to really watch out for this that would be great!

thanks

0 投票
2 回答
1245 浏览

android - 配置更改后丢失对变量的引用

我有一个查找用户位置(MyLocation 类)的活动,然后使用或不使用地理点运行 AsyncTask 以连接到服务器并从我的服务器获取城市列表。当列表准备好时,它将它们保存在 ArrayList 城市中。一旦城市 ArrayList 被填满,我希望它被保存好(证明配置更改)。CityItem 实现 Parcelable。我将它们保存在 onSaveInstanceState 中并在 onCreate 中检索它们。

现在,如果任务已完成且城市列表已填满,则一切正常。然后我来回旋转我的设备和 Log.i("StartActivity", "Cities list added:"+cities.toString()); 被调用。

但是,如果我在找到地理点之前旋转设备(或任务完成 - 很难说,因为它发生得很快),那么

被调用(并且城市在日志中非常好)但是当我再次旋转它时ArrayList 城市似乎再次为空

看来,如果配置更改并且 savedInstanceState.cities 为空,则 ArrayList 城市会以某种方式再次创建,并且它与 gotCities() 函数中的 ArrayList 不同。

我很确定这很容易,但我一直在寻找答案几个小时,但我根本做不到。

活动代码:

从 AsyncTask onPostExecute 调用 gotCities() 方法:

0 投票
1 回答
14017 浏览

android - 为什么 onLayout 和 onSizeChanged 在方向更改时会被调用两次?

我注意到在处理来自 Activity 的配置更改时,从横向->纵向或纵向->横向更改方向后,onLayout 和 onSizeChanged 会立即连续调用两次。此外,第一个 onLayout/onSizeChanged 包含尺寸(旋转之前),而第二个 onLayout/onSizeChanged 包含(正确)尺寸。

有谁知道为什么,和/或如何解决这个问题?似乎屏幕尺寸的变化可能在配置更改后的一段时间内发生 - 即,在onConfigurationChanged调用配置更改后尺寸不正确?

这是下面代码的调试输出,显示了从纵向旋转到横向后的 onLayout/onSizeChanged 调用(注意设备为 540x960,因此横向宽度应为 960,而纵向宽度为 540):

另请注意,第一个 onSizeChanged oldwidth 和 oldheight 为 0,表明我们刚刚添加到视图层次结构中 - 但横向尺寸错误!

这是说明这种行为的代码:

我的活动.java

MyHorizo​​ntalScrollView.java

AndroidManifest.xml

0 投票
1 回答
412 浏览

android - TabHost 无法识别 configChanges?

我的 TabHost 有一个很大的问题。虽然我已经声明我的所有活动(包括我的 TabHost 活动)忽略方向和键盘隐藏,但如果我翻转我的手机(Android 4.0)它仍然会重新创建活动。

这是我的清单的缩短版本:

我不认为活动的代码会有帮助?!
但是,如果可以,请告诉我,我也会发布它。


亲切的问候

0 投票
1 回答
1781 浏览

android - 检测 uiMode 或键盘更改 android

我试图构建一个测试应用程序,它仅在发生配置更改时中继一条 toast 消息。(这就是它应该做的,它不起作用)最终的目的是检测用户是否将平板电脑放入键盘支架或将其从键盘支架中取出。我的清单和主要活动如下..我认为当平板电脑对 uiMode 或外部键盘进行配置更改时,此代码会触发敬酒..但是当我停靠/取消停靠时没有任何反应..请帮忙

我的清单:

我的爪哇:

0 投票
1 回答
807 浏览

android - “触摸屏”和“导航”配置更改何时触发?

阅读Android的文档android:configChanges,我发现:

嗯。。好吧。那么这里的“通常”是什么意思?这是否意味着它确实有时会发生?有人可以举例说明何时会触发吗?

0 投票
1 回答
1693 浏览

android - 设备方向改变时不调用 onConfigChanged()

我在捕捉应用程序中的方向变化时遇到问题。我想防止在设备重新定向时重新启动我的应用程序表单。

我的应用程序中有 3 个活动(第三个是 FragmentActivity)。主要的用户交互是通过 FragmentActivity。

我已更改清单,以便所有活动都具有以下属性:

android:configChanges="orientation"

我还在onConfigurationChanged()所有活动中重写了该方法,并查看它是否真的被调用了,我包含了一个Log.i()声明,但没有报告任何内容。

我目前正在使用模拟器对此进行测试,并且当我执行 CTRL+F12 时会报告方向更改。

I/ActivityManager(67):配置更改:{ scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=34 uiMode=17 seq=10}

有什么我想念的吗?

0 投票
1 回答
473 浏览

android - 防止 onDraw() 函数在配置更改期间重新启动

我有一个活动,它基本上会睡一段时间并初始化另一个活动。在这段睡眠时间里,我在屏幕上制作了一些动画图画。

但是当屏幕方向改变时,活动正在重新启动。所以我通过修改清单文件来处理它。

我还有一个问题。我阻止活动重新启动,但 SplashScreenView 类中的 onDraw() 函数仍然重新启动。