2010-03-27 97 views
0

我有一个对话框弹出窗口来指示我想要运行一个活动的时间。 似乎很简单,但很难确定活动何时开始。 如果用户在G1上打开键盘并进入横向,则会重新执行onCreate方法的活动。应用程序生命周期。如何仅在应用程序启动时运行某些操作

我不能为该类创建静态,甚至不能创建应用程序类,因为我无法确定“应用程序”何时消失。即使在破坏唯一的活动后,应用程序显然仍然活着。

有没有方法可以确定onCreate是因为键盘被扩展或横向模式调用而被调用的?

感谢

回答

3

我试着创建一个应用程序的子类,但我仍然无法确定它何时会消失。

我试过另一种方法。 我在清单中添加的活动中,

android:configChanges="orientation|keyboardHidden" 

然后在活动范围内我加入,

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
} 

这导致我的onCreate方法没有被调用时的方向变化或键盘被隐藏。我不确定为什么我的观点在任何一种情况下看起来都是正确的,但是效果很好。事实上,它甚至可以处理输入到显示的对话框中的文本。方向改变时文本保持不变。

+0

这是最好的方法。通过添加行android:configChanges =“...“你已经告诉Android,在这种情况下,它不需要重新开始活动,只需重新绘制它们(实际上很少有人知道这个功能很有趣 - 我知道直到最近才知道 - 但是这是一个简单的解决方案!)顺便说一下,如果这种技术解决了您的问题,您能否将自己的答案标记为“已接受”?这会将此问题从未解决问题的列表中删除。 – 2010-03-27 12:01:41

0

有没有办法来确定 的onCreate被称为因 正在扩展键盘或 风景模式调用?

有一种办法:
1.检查键盘正在扩展
2.一种方法来检查当前的方向(横向或纵向)

确定的onCreate()是否已经所谓或不需要你的一些工作。例如,你可以有一个变量来标记onCreate()的完成并将它保存在Activity的状态包中。

您可以通过检查onCreate()来确定这是第一次运行还是由于配置更改而重新启动,通过从1,2和标志的值中取出某些意义。

这只是一个建议;可能存在更好的解决方案

3

在onSaveInstanceState中,您可以存储一个标志,指示它是否已经运行。如果应用程序正在恢复,然后在onCreate(Bundle savedInstanceState)中,savedInstanceState将具有该变量,因此您可以检查savedInstanceState!= null和saveInstanceState.get(“restoreoring”)!= null,然后不显示对话框。

+0

+10 (你的回答)让我们有两种:) – Samuh 2010-03-27 04:05:17

+0

但问题是我不知道为什么它消失了。可能是因为系统停止了活动,或者用户或方向改变了。我真正需要的是知道这是因为改变方向而发生的。 – David 2010-03-27 06:14:56

相关问题